這里是表單的問題,除了頭像欄位外,所有欄位都被應用。我看不出原因。
形式
class UserEditForm(forms.ModelForm):
class Meta:
model = User
fields = ['username', 'name', 'email', 'bio', 'avatar']
exclude = ()
widgets = {
'avatar': forms.FileInput(),
'bio': forms.Textarea(),
}
意見
@login_required(login_url='login')
def edit_profile(request):
user = request.user
form = UserEditForm(instance=user)
if request.method == 'POST':
form = UserEditForm(request.POST, request.FILES, instance=user)
if form.is_valid():
form.save()
return redirect('get_author', pk=user.id)
return render(request, 'account/edit_profile.html', {'form': form})
模板
<form class="form-horizontal" role="form" method="POST" action="">
{% csrf_token %}
<div class="col-md-3">
<div class="text-center">
<img src="{{ request.user.avatar.url }}" class="avatar img-circle" alt="avatar"
style="width: 100px; height: 100px;">
<h6>Upload a different photo...</h6>
{{ form.avatar }}
</div>
</div>
... 其他領域
謝謝你的幫助
uj5u.com熱心網友回復:
您需要指定表單的enctype="…"[mozilla-dev] 屬性:這解釋了檔案將如何編碼:
<form enctype="multipart/form-data" class="form-horizontal" role="form" method="POST" action="">
…
</form>
uj5u.com熱心網友回復:
您需要更新模板代碼并使用表單標簽中的“multipart/form-data”將檔案作為請求物件的一部分上傳。
<form class="form-horizontal" role="form" method="POST" action="" enctype="multipart/form-data">
{% csrf_token %}
<div class="col-md-3">
<div class="text-center">
<img src="{{ request.user.avatar.url }}" class="avatar img-circle" alt="avatar"
style="width: 100px; height: 100px;">
<h6>Upload a different photo...</h6>
{{ form.avatar }}
</div>
</div>
</form>
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/311220.html
上一篇:驗證表單不起作用-表單和驗證
