django 提交按钮损坏

nuypyhwy  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(77)

我有一个简单的个人资料页,我想改变个人资料图片。
表格:

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})


当我点击按钮时,设计损坏。我看到非常大的提交按钮,链接的图片和文件上传按钮.


的数据
我的方法有什么问题

r6vfmomb

r6vfmomb1#

我认为当您按下submit时,会调用相同的视图,并且您成功地更新了UserProfile示例,但是您之前填写的表单会再次传递到模板中。我不确定这是否会有帮助,但我会尝试:
删除else,并使最后一条语句(以前在else内部)在if语句之外在return之前执行。

@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')          
    
    profile_form = UserProfilePictureUpdateForm(instance=user_profile)
    return render(request, 'profile.html', {'profile_form': profile_form})

字符串
最后一个想法,如果我上面写的没有帮助:在这种情况下,你也可以做的是,一旦你成功地更新了用户配置文件,你可以重定向到另一个页面(配置文件页面可能?这样用户就可以看到图像是如何更新的?)。你可以通过在if中添加另一个return来实现这一点,在消息之后,它将你重定向到其他地方。

相关问题