gpt4 book ai didi

python - Django form.errors 没有出现在模板中

转载 作者:太空狗 更新时间:2023-10-30 00:53:05 27 4
gpt4 key购买 nike

我已经引用了this stackoverflow 页面并试图在 html 模板上显示我的表单错误。我做了:

    {% if form.error %}
{% for field in form %}
{% for error in field.errors %}
<div class="alert alert-danger">
<strong>{{ error|escape }}</strong>
</div>
{% endfor %}
{% endfor %}
{% for error in form.non_field_errors %}
<div class="alert alert-danger">
<strong>{{ error|escape }}</strong>
</div>
{% endfor %}
{% endif %}

正如在 stackoverflow 问题中所说,我也尝试简单地做:

{% if form.error %}
This should pop up if there is an error
{% endif %}

无论如何都没有出现:这是我的 view.py 代码:

def register(request):
if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password2')
user = authenticate(username=username, password=password)
login(request, user)
return HttpResponseRedirect('/')
else:
print(form.errors)
form = UserCreationForm()
return render(request, 'registration/register.html', {'form': form})

我能够将表单错误发送到 Django 控制台,但它拒绝显示在模板上。

打印 form.errors打印到控制台:<li>password2<ul class="errorlist"><li>The two password fields didn&#39;t match.</li></ul></li></ul>

最佳答案

forms.errors 启动了,但最后,您在呈现 View 之前声明了一个新表单 form = UserCreationForm()

检查 form 是否有效后,所有的验证错误都在 form 实例中,记住进程按顺序运行,在最后,您使用 form = UserCreationForm() 销毁了变量 form,因此不再有验证错误

当您的请求方法是 GET 时,您可以将此新表单 form = UserCreationForm() 添加到 else 语句中,以继续拥有一个空的表格。通过添加 else 语句,您可以避免对表单进行新的赋值;在验证过程之后,它将跳转到render(request,....)form实例包含所有验证错误

if request.method == 'POST':
form = UserCreationForm(request.POST)
if form.is_valid():
form.save()
username = form.cleaned_data.get('username')
password = form.cleaned_data.get('password2')
user = authenticate(username=username, password=password)
login(request, user)
return HttpResponseRedirect('/')
else:
print(form.errors)
<b>else:</b>
<b>form = UserCreationForm()</b>
return render(request, 'registration/register.html', {'form': form})

Note, the correct call for form errors in templates is form.errors with s not form.error

<s>{% if form.error %}</s>  <b>{% if form.errors %}</b>

关于python - Django form.errors 没有出现在模板中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51146120/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com