在我的主页上,我有一个登录表单和注册表单,我使用form.is_valid()来验证表单,
但不是
return render(request,'registration/login.html', {'form': form})
我用
messages.error(request, 'username or password wrong.')
return redirect('/')
我这样做是因为
return render(request,'registration/login.html', {'form': form})
在form.is_valid()失败后,刷新页面会弹出一个框,说重新提交确认,我不想要这个,所以我正在使用第二种方法。
问题是有两种形式:登录和注册,我不能把错误信息放在一个地方,这会产生误导,那么如何在一个页面中显示两条消息?
答案 0 :(得分:1)
您可以将extra_tags
用于来自邮件框架的邮件,以识别两条不同的邮件。
例如,对于登录错误
messages.error(request, 'username or password wrong.', extra_tags='login')
注册错误,
messages.error(request, 'username or password wrong.', extra_tags='signup')
然后在模板中,根据标签,您将消息放入适当的格式
{# login form #}
{%for message in messages %}
{%if "login" in message.tags %}
<p> {{message}} </p> {# show login error message #}
{%endif%}
{%endfor%}
{# signup form #}
{%for message in messages %}
{%if "signup" in message.tags %}
<p> {{message}} </p> {# show signup error message #}
{%endif%}
{%endfor%}
的更多参考资料
答案 1 :(得分:0)
您可以使用form.errors dict,如果表单无效,他会存储字段名称和错误消息,例如:
>>> print form.errors
{'password': [u'This field is required']}
然后您可以在模板中使用:
{% if 'username' in form.errors.keys %}
<div class="error-message">
Your username input error message!
</div>
{% endif %}
{% if 'password' in form.errors.keys %}
<div class="error-message">
Your password input error message!
</div>
{% endif %}
我能看到的唯一问题是输出信息,她有点难看=] 但是你可以使用另一种技巧来使它变得更漂亮,就像使用其他dicts存储漂亮的消息并通过字段名称来获取它......你做出了这个选择。
抱歉我的英文不好; /