Django 在基于类的视图中正确实现UserPasseStMixin或AccessMixin
使用基于类的视图时,可以以下列方式()使用Django 在基于类的视图中正确实现UserPasseStMixin或AccessMixin,django,django-views,Django,Django Views,使用基于类的视图时,可以以下列方式()使用userpassestimixin: 文件还规定: 此外,您可以设置AccessMixin的任何参数来定制对未授权用户的处理 但是,没有提供关于如何执行此操作的语法示例。例如,我如何设置raise\u exception和permission\u denied\u message以使经过身份验证的用户获得异常错误而不是403 这不起作用,因为用户仍然返回403错误: class MyView(UserPassesTestMixin, View):
userpassestimixin
:
文件还规定:
此外,您可以设置AccessMixin的任何参数来定制对未授权用户的处理
但是,没有提供关于如何执行此操作的语法示例。例如,我如何设置raise\u exception
和permission\u denied\u message
以使经过身份验证的用户获得异常错误而不是403
这不起作用,因为用户仍然返回403错误:
class MyView(UserPassesTestMixin, View):
raise_exception = True
permission_denied_message = 'You have been denied'
def test_func(self):
return self.request.user.email.endswith('@example.com')
您应该重写
handle\u no\u permission
方法来处理用户在未通过测试时看到的内容:
class MyView(UserPassesTestMixin, View):
def test_func(self):
return self.request.user.email.endswith('@example.com')
def handle_no_permission(self):
""" Do whatever you want here if the user doesn't pass the test """
return HttpResponse('You have been denied')
您应该重写
handle\u no\u permission
方法来处理用户在未通过测试时看到的内容:
class MyView(UserPassesTestMixin, View):
def test_func(self):
return self.request.user.email.endswith('@example.com')
def handle_no_permission(self):
""" Do whatever you want here if the user doesn't pass the test """
return HttpResponse('You have been denied')
基于类的视图
userpassestimixin
继承自AccessMixin
mixin,其中表示选项。从的文档中
如果此属性设置为True
,则会出现PermissionDenied异常
当条件不满足时提出。如果为False(默认值),
匿名用户被重定向到登录页面
当您将其设置为True且用户未通过身份验证时,服务器将返回403状态。选项permission\u denied\u message
仅控制将传递给PermissionDenied异常的消息。它不会向用户返回任何消息(当然,您可以覆盖它)。一个稍微简化的版本来自:
其中PermissionDenied
类就这么简单:
class PermissionDenied(Exception):
"""The user did not have permission to do that"""
pass
基于类的视图
userpassestimixin
继承自AccessMixin
mixin,其中表示选项。从的文档中
如果此属性设置为True
,则会出现PermissionDenied异常
当条件不满足时提出。如果为False(默认值),
匿名用户被重定向到登录页面
当您将其设置为True且用户未通过身份验证时,服务器将返回403状态。选项permission\u denied\u message
仅控制将传递给PermissionDenied异常的消息。它不会向用户返回任何消息(当然,您可以覆盖它)。一个稍微简化的版本来自:
其中PermissionDenied
类就这么简单:
class PermissionDenied(Exception):
"""The user did not have permission to do that"""
pass