Python Django-注册失败,向用户显示原因
我使用的是内置的django用户模型,但很难向用户反馈为什么他们的注册详细信息失败 例如,不符合型号密码要求、现有用户等 我有Python Django-注册失败,向用户显示原因,python,django,Python,Django,我使用的是内置的django用户模型,但很难向用户反馈为什么他们的注册详细信息失败 例如,不符合型号密码要求、现有用户等 我有 # forms.py - so they supply their email address for verification class CustomUserCreationForm(UserCreationForm): class Meta(UserCreationForm.Meta): fields = UserCreationForm.
# forms.py - so they supply their email address for verification
class CustomUserCreationForm(UserCreationForm):
class Meta(UserCreationForm.Meta):
fields = UserCreationForm.Meta.fields + ("email",)
# views.py
def register(request):
if request.method == "GET":
return render(
request, "users/register.html",
{"form": CustomUserCreationForm}
)
elif request.method == "POST":
form = CustomUserCreationForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_valid = False
user.save()
else:
messages.info(request, 'invalid registration details')
return render(request, "users/register.html", {"form": CustomUserCreationForm})
如何找出表单失败的原因,并将其返回给用户?目前,它只是给出了一个通用的消息,没有用户反馈为什么它不起作用
一旦您调用了表单,非常感谢。如果有错误,表单的实例将变得非常重要,因为这些错误存在于该实例上。因此,您需要将其传递回用户,以便显示错误
因此,要在您的案例中实现这一点,您需要如下更改您的视图
def register(request):
if request.method == "GET":
return render(
request, "users/register.html",
{"form": CustomUserCreationForm}
)
elif request.method == "POST":
form = CustomUserCreationForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.is_valid = False
user.save()
else:
messages.info(request, 'invalid registration details')
return render(
request,
"users/register.html",
{"form": form} # This still includes the errors instead of creating a new form
)
这样,您就可以迭代模板中的错误
{%csrf_令牌%}
{%if form.non_字段_错误%}
{%表示表单中的错误。非\u字段\u错误%}
{{error}}
{%endfor%}
{%endif%}
{%用于隐藏在表单中。隐藏的_字段%}
{{隐藏}}
{%endfor%}
{%形式的字段为%}
{{field}}
{{field.errors.as_ul}}
{%endfor%}
提交
您可以访问post。这将有助于你谢谢你,令人惊讶的答案,非常有帮助:-)