我创建页面以更新用户auth用户名。但在前端,如果存在用户名django显示错误(确定)但更改request.user实例。所以菜单上的用户名也会改变并输入。我需要刷新页面恢复正常。
form_profile = UserProfileForm(request.POST or None, instance = UserProfile.objects.get(user = request.user))
form_user = UserForm(request.POST or None, instance = request.user )
if form_profile.is_valid() and form_user.is_valid():
form_profile.save()
form_user.save()
template = loader.get_template('users/user_edit.html')
return HttpResponse(template.render({"form_profile":form_profile, "form_user": form_user}, request))
我无法使用form_profile = UserProfileForm()
重置表单,因为是用户编辑页面。我需要用实际信息“重置”表格。
答案 0 :(得分:1)
如果您从数据库中获取用户并将其用作表单实例,则request.user
不应更改。
user = User.objects.get(id=request.user.id)
form_user = UserForm(request.POST or None, instance=user )
顺便说一下,通常建议在成功发布请求后重定向(即使您重定向到同一个网址)。您还可以使用render
快捷方式来简化代码:
from django.shortcuts import render, redirect
def my_view(request):
form_profile = UserProfileForm(request.POST or None, instance = UserProfile.objects.get(user = request.user))
form_user = UserForm(request.POST or None, instance = request.user )
if form_profile.is_valid() and form_user.is_valid():
form_profile.save()
form_user.save()
return redirect('/success-url/')
return render(request, 'users/user_edit.html', {"form_profile":form_profile, "form_user": form_user})