django 提交按钮损坏

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

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

  1. class UserProfilePictureUpdateForm(forms.ModelForm):
  2. class Meta:
  3. model = UserProfile
  4. fields = ['profile_photo',]

字符串
模板:

  1. <form method="post" enctype="multipart/form-data" action='{% url "update_profil_photo" %}'>
  2. {% csrf_token %}
  3. <button class="btn btn-info" type="submit" value="{{ profile_form.profile_photo }}">
  4. <i class="fa fa-fw fa-camera"></i>
  5. <span>Change Photo</span>
  6. </button>
  7. </form>


意见:

  1. @login_required
  2. def update_profil_photo(request):
  3. user_profile = get_object_or_404(UserProfile, user=request.user)
  4. user = request.user
  5. if request.method == 'POST':
  6. profile_form = UserProfilePictureUpdateForm(request.POST, request.FILES, instance=user_profile)
  7. if profile_form.is_valid():
  8. profile_form.save()
  9. messages.success(request, 'Update is successful')
  10. else:
  11. profile_form = UserProfilePictureUpdateForm(instance=user_profile)
  12. return render(request, 'profile.html', {'profile_form': profile_form})


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


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

r6vfmomb

r6vfmomb1#

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

  1. @login_required
  2. def update_profil_photo(request):
  3. user_profile = get_object_or_404(UserProfile, user=request.user)
  4. user = request.user
  5. if request.method == 'POST':
  6. profile_form = UserProfilePictureUpdateForm(request.POST, request.FILES, instance=user_profile)
  7. if profile_form.is_valid():
  8. profile_form.save()
  9. messages.success(request, 'Update is successful')
  10. profile_form = UserProfilePictureUpdateForm(instance=user_profile)
  11. return render(request, 'profile.html', {'profile_form': profile_form})

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

展开查看全部

相关问题