我有一个简单的个人资料页,我想改变个人资料图片。
表格:
class UserProfilePictureUpdateForm(forms.ModelForm):
class Meta:
model = UserProfile
fields = ['profile_photo',]
字符串
模板:
<form method="post" enctype="multipart/form-data" action='{% url "update_profil_photo" %}'>
{% csrf_token %}
<button class="btn btn-info" type="submit" value="{{ profile_form.profile_photo }}">
<i class="fa fa-fw fa-camera"></i>
<span>Change Photo</span>
</button>
</form>
型
意见:
@login_required
def update_profil_photo(request):
user_profile = get_object_or_404(UserProfile, user=request.user)
user = request.user
if request.method == 'POST':
profile_form = UserProfilePictureUpdateForm(request.POST, request.FILES, instance=user_profile)
if profile_form.is_valid():
profile_form.save()
messages.success(request, 'Update is successful')
else:
profile_form = UserProfilePictureUpdateForm(instance=user_profile)
return render(request, 'profile.html', {'profile_form': profile_form})
型
当我点击按钮时,设计损坏。我看到非常大的提交按钮,链接的图片和文件上传按钮.
的数据
我的方法有什么问题
1条答案
按热度按时间r6vfmomb1#
我认为当您按下submit时,会调用相同的视图,并且您成功地更新了UserProfile示例,但是您之前填写的表单会再次传递到模板中。我不确定这是否会有帮助,但我会尝试:
删除
else
,并使最后一条语句(以前在else
内部)在if语句之外在return之前执行。字符串
最后一个想法,如果我上面写的没有帮助:在这种情况下,你也可以做的是,一旦你成功地更新了用户配置文件,你可以重定向到另一个页面(配置文件页面可能?这样用户就可以看到图像是如何更新的?)。你可以通过在
if
中添加另一个return
来实现这一点,在消息之后,它将你重定向到其他地方。