【问题标题】:PermissionRequiredMixin AccessMixin permission_denied_messagePermissionRequiredMixin AccessMixin permission_denied_message
【发布时间】:2023-03-12 06:42:01
【问题描述】:

好的,所以我不知道为什么 django 在引发 PermissionDenied 异常并且还插入了 permission_denied_message 变量时显示“403 Forbidden”。我想显示我自己的自定义消息。虽然不知道做错了什么。这是我的代码

class ProfileFormView(PermissionRequiredMixin, generic.UpdateView):
    permission_required = 'shop_buy.change_userprofile'
    raise_exception = True
    permission_denied_message = 'Permission Denied'
    model = UserProfile
    fields = ['location', 'gender', 'profile_picture']
    template_name_suffix = '_form'

【问题讨论】:

    标签: python django


    【解决方案1】:

    来自documentation

    Django 有一个视图来处理 403 Forbidden 错误...此视图在您的根模板目录中加载并呈现模板 403.html,或者如果此文件不存在,则提供文本“403 Forbidden”,根据RFC 7231#section-6.5.3(HTTP 1.1 规范)。

    所以默认响应只有两个词:“403 Forbidden”——它不显示异常消息。如果要显示异常(在视图上下文中可用),您需要提供自己的 403.html 模板来显示它。像这样的东西会起作用:

    <h1>403 Forbidden</h1>
    <p>{{ exception }}</p>
    

    请注意,该异常仅在 Django 1.9 的模板中可用。

    另请注意,您可能并不总是希望公开异常的内容!

    【讨论】:

    • 请问这个模板在哪个目录下,我需要在视图上下文中引用它吗?
    • 在您的应用程序的templates 目录的根目录中。您不需要引用它,因为这是默认设置。
    • 好的,这样就按预期进行了。如果我不希望在请求视图时而是在尝试发布视图时引发权限异常怎么办?我将如何自定义 ProfileFormView 以适应这种情况?谢谢。
    • 我无法在错误页面 403.html 中显示 {{ exception }}。你能看看我的question吗?
    猜你喜欢
    • 2021-11-21
    • 1970-01-01
    • 2019-07-24
    • 2022-01-02
    • 2016-04-13
    • 2019-06-02
    • 2017-07-06
    • 1970-01-01
    • 2021-10-20
    相关资源
    最近更新 更多