繁体   English   中英

如何在一页中显示多个django消息?

[英]How to display multiple django messages in one page?

在我的主页上,我有一个登录表单和一个注册表单,并且我使用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()失败后,刷新页面将导致弹出框显示重新提交确认,我不想要这个,因此正在使用第二种方法。

问题是登录和注册有两种形式,我不能将错误消息放在一个地方,这会引起误解,那么如何在一页中显示两个消息呢?

您可以对消息框架中的消息使用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%}

有关添加额外消息标签的更多参考

您可以使用form.errors字典,如果表单无效,他将存储字段名称和错误消息,例如:

>>> 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 %}

我能看到的唯一问题是输出消息,她有点丑=]但您可以使用其他技巧来使它更漂亮,例如使用其他字典来存储漂亮消息并通过字段名称获取他。您做出选择。

*对不起,我的英语不好 ;/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM