如何解决图像未在 Django 中更新
请帮帮我。我正在尝试更新用户名和电子邮件已更新但图像没有更新的配置文件。我的代码是....
profile.html
<form method="POST" enctype="multipart/form-data">
{% csrf_token %}
<fieldset class="form-group">
<legend class="border-bottom mb-4">Profile Info</legend>
{{ u_form|crispy }}
{{ p_form|crispy }}
</fieldset>
<br>
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Update</button>
</div>
</form>
views.py
@login_required
def profile(request):
if request.method == 'POST':
u_form = UserUpdateForm(request.POST,instance=request.user)
p_form = ProfileUpdateForm(request.FILES,instance=request.user.profile)
if u_form.is_valid() and p_form.is_valid():
u_form.save()
p_form.save()
messages.success(request,f'Account Successfully Updated!')
return redirect('profile')
else:
u_form = UserUpdateForm(request.POST,instance=request.user)
p_form = ProfileUpdateForm(request.POST,instance=request.user.profile)
context = {
'u_form' : u_form,'p_form' : p_form
}
return render(request,'users/profile.html',context)
forms.py
class ProfileUpdateForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['image']
解决方法
我认为您的问题在于 views.py。
首先,您正在检查检索视图的方法是否为 POST。如果不是,则您正在使用不存在的 POST 数据初始化表单。我在下面为您简化了。
其次,您没有将 POST 信息传递给第二个表单,仅传递文件部分。您是否尝试更改 p_form 以采用以下两个参数?
@login_required
def profile(request):
if request.method == 'POST':
u_form = UserUpdateForm(request.POST,instance=request.user)
p_form = ProfileUpdateForm(request.POST,request.FILES,instance=request.user.profile)
if u_form.is_valid() and p_form.is_valid():
u_form.save()
p_form.save()
messages.success(request,f'Account Successfully Updated!')
return redirect('profile')
else:
u_form = UserUpdateForm(instance=request.user)
p_form = ProfileUpdateForm(instance=request.user.profile)
context = {
'u_form' : u_form,'p_form' : p_form
}
return render(request,'users/profile.html',context)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。