PermissionRequiredMixin AccessMixin permission_denied_message

Posted

技术标签:

【中文标题】PermissionRequiredMixin AccessMixin permission_denied_message【英文标题】: 【发布时间】:2016-05-03 23:56:48 【问题描述】:

好的,所以我不知道为什么 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'

【问题讨论】:

【参考方案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吗?

以上是关于PermissionRequiredMixin AccessMixin permission_denied_message的主要内容,如果未能解决你的问题,请参考以下文章

在python中,a+=a-=a的值是多少?

20170924 a20170924 a

a++和++a的区别

逻辑代数

python运算符

运算符