Python 图像未在Django中更新
请帮帮我。我正在尝试更新个人资料,其中用户名和电子邮件已更新,但图像未更新。我的代码是 profile.htmlPython 图像未在Django中更新,python,django,django-models,django-forms,Python,Django,Django Models,Django Forms,请帮帮我。我正在尝试更新个人资料,其中用户名和电子邮件已更新,但图像未更新。我的代码是 profile.html <form method="POST" enctype="multipart/form-data"> {% csrf_token %} <fieldset class="form-group"> <legend class=&quo
<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>
forms.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)
class ProfileUpdateForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['image']
我相信你的问题在于views.py 首先,检查检索视图的方法是否为POST。如果不是,则您正在使用不存在的POST数据初始化表单。我已经在下面为你简化了 其次,您没有将POST信息传递给第二个表单,只传递文件部分。您是否尝试过将p_表单更改为采用以下两个参数
@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)
我们能看到风景和形状吗?请将代码作为对原始帖子的编辑发布,而不是评论。感谢回复我已更新了视图。因此,您在这里遇到的问题是,当您不更改图像并提交表单时,图像设置为“无”。是这样吗?不,问题是当我更新个人资料时,用户名和电子邮件会更新,但图像不会更新。我已经再次检查了我的代码,在用您的代码更新后,它最终会工作。谢谢你的帮助。