【问题标题】:How to display "permission_denied_message" in custom 403.html page in Django如何在 Django 的自定义 403.html 页面中显示“permission_denied_message”
【发布时间】:2020-11-19 20:31:23
【问题描述】:

我们如何在Django的自定义403错误中正确显示异常信息

在我正在使用的注册视图中:

class SignUpView(LoginRequiredMixin, PermissionRequiredMixin, CreateView):
    login_url = 'error_403'
    # ....
    # ...
    permission_denied_message = 'You are not allowed this transaction!! Ha Ha!!'
#    raise PermissionDenied() # ('permission_denied_message')
    raise_exception = True

现在如何在我的自定义 403.html 中显示消息(“permission_denied_message”?)?

这是我渲染错误页面的函数:

def error_403(request, exception):
    data = {}
    add_user = 'add_user'
    data = {'perm': add_user}
    return render(request, '403.html', data)

我经历了很多关于这个主题的事情(包括那些关于 SO 的事情)但无法成功显示错误消息(除了我放在“403.html”中的静态消息>”)。我在模板中使用了{{ exception}},但没有显示任何内容(除了我已经拥有的静态消息)。

1.如何在自定义 403 页面中显示permission_denied_message

2。目前,我在函数error_403 中手动更新dict data{} 中的一些原始数据,这些数据会在403 错误页面上呈现。 dict的正确用法是什么?

【问题讨论】:

    标签: python-3.x django exception permission-denied user-permissions


    【解决方案1】:

    您可以使用 django 消息框架来执行此操作。这允许您添加要发送到模板的自定义消息。 您需要从 django.contrib 导入它。这是向模板发送错误消息的代码。

    from django.contrib import messages
    # In your function you do this
    
    
    def error_403(request, exception):
        error_message = messages.add_message(request, messages.ERROR, "permission denied")
        errors = {'errors': error_message}
        return render(request, '403.html', errors)
    

    在您的模板中,您可以检查是否有错误消息,然后显示它们

    <h1> {{errors}} </h1>
    

    【讨论】:

      猜你喜欢
      • 2014-05-02
      • 2012-02-12
      • 1970-01-01
      • 2021-11-21
      • 2013-07-13
      • 2013-08-04
      • 2015-04-04
      • 2020-01-21
      • 1970-01-01
      相关资源
      最近更新 更多