2017-03-15 25 views
1

フォームを使用してユーザープロフィール画像をアップロードしようとしているときに、ユーザーがアカウント情報を編集できるようになっても何も起こりません。フォームを送信した後に画像がアップロードされない

このアップロード作業を行うには、どうすればよいか分かりません。

models.py

class UserProfile(models.Model): 
    objects = models.Manager() 

    user = models.OneToOneField(User) 
    image = models.ImageField(upload_to='profile_image', blank=True) 

def __str__(self): 
    return self.user.username 

forms.py

class EditProfileForm(forms.ModelForm): 

class Meta: 
    model = UserProfile 
    fields = (
     'image', 
    ) 

views.py

def edit_profile(request): 
if request.method == 'POST': 
    form = EditProfileForm(request.POST, instance=request.user.userprofile) 

    if form.is_valid(): 
     form.save() 
     return redirect(reverse('accounts:view_profile')) 
else: 
    form = EditProfileForm(instance=request.user.userprofile) 
    args = {'form': form} 
    return render(request, 'accounts/edit_profile.html', args) 

settings.py

MEDIA_URL = '/media/' 
MEDIA_ROOT = os.path.join(BASE_DIR, 'mainapp/media') 

編集profile.html

<form method="post"> 
    {% csrf_token %} 
    {{ form.as_p }} 
    <button type="submit">Submit</button> 
</form> 

答えて

0

ファイルをアップロードしたい場合は(画像を含む)Djangoのビューに、あなたはrequest.FILESからファイルを取得する必要があります。このように:

if request.method == 'POST': 
    form = EditProfileForm(request.POST, request.FILES, instance=request.user.userprofile) 

    if form.is_valid(): 
     data = form.save(commit=False) 
     data.user = request.user 
     data.save() 
     return redirect(reverse('accounts:view_profile')) 
+0

私はそれを試しましたが、フォームを送信した後も選択した画像で何も起こっていません。 –

+0

@rchtp更新された回答。これをチェックしてください:) – Beomi

+0

@Boemi残念ながら、まだ何もありません。( –

関連する問題