带有自定义错误消息的 Django 重定向

Posted

技术标签:

【中文标题】带有自定义错误消息的 Django 重定向【英文标题】:Django redirect with a custom error message 【发布时间】: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 message framework。请不要对 URL 中的消息进行编码。 【参考方案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/…

以上是关于带有自定义错误消息的 Django 重定向的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Fortify 自定义身份验证重定向

用于重定向的 Django 自定义装饰器

在自定义登录页面上引发错误时下一个身份验证“凭据”重定向

在 cPanel 中创建自定义 PHP 错误页面,而不将它们从引发错误的页面重定向

如何将 is_staff 用户重定向到 Django 中的自定义模板?

根据带有参数的wordpress上的位置重定向到自定义网址