【问题标题】:Django redirect with a custom error message带有自定义错误消息的 Django 重定向
【发布时间】:2019-12-14 21:21:07
【问题描述】:

我是使用 django 模板/前端的新手,我想在 django 中重定向到带有自定义消息的页面。

这是我尝试过的,但我无法让它工作。

查看

return redirect("/login",custom_error="Try Again Later")

Login.html

{% if custom_error %}
<p class="errornote">
    {{ custom_error }}
</p>
{% endif %}

关于如何进行这项工作的任何建议?

【问题讨论】:

标签: django django-templates django-views django-admin


【解决方案1】:

不要对 URL 中的错误消息进行编码。您可以为此使用Django message framework [Django-doc]

在您提出请求之前,请添加一条消息:

from django.contrib import messages

messages.error('Try again later')
return redirect('name-of-login-view')

最好指定视图的名称,而不是路径,因为以后路径可能会改变。

在模板中,可能最好在由(大多数)其他模板继承的base.html 模板中,然后您可以使用以下方式渲染它:

{% if messages %}
<ul class="messages">
    {% for message in messages %}
    <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }}</li>
    {% endfor %}
</ul>
{% endif %}

【讨论】:

  • 尝试过类似的事情,但它显示了来自 messages.error 的 2 条错误消息 1 和来自下面代码的另一个。 {% if messages %} {% for message in messages %}

    {{ message }}

    {% endfor %} {% endif %} 无论如何,我可以禁用消息中的消息。错误我想在我自己的 css 中显示我的消息

  • @shibs:我认为使用message.tags 可能会更好,因为消息框架允许发送“信息”消息、“成功”消息、“警告”消息等。如果您稍后想发送消息“订单已成功处理”,您可能不想将其显示为错误?
  • @shibs:您可以添加额外的日志级别,例如在其中之一上使用'errornote'docs.djangoproject.com/en/dev/ref/contrib/messages/…
猜你喜欢
  • 2018-05-04
  • 1970-01-01
  • 2011-08-20
  • 2013-09-09
  • 2015-04-10
  • 2013-04-04
  • 1970-01-01
  • 2015-10-02
  • 2012-05-08
相关资源
最近更新 更多