- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用基于类的 View ,我想确保每个 View 都可以由登录用户和一种类型的用户访问(有两组用户 - 每组都有不同的权限) 。
我正在根据具有权限的文档来实现此操作(我正在使用 Django 1.7.7)https://docs.djangoproject.com/en/1.7/topics/class-based-views/intro/#decorating-the-class ,但是使用两个参数会引发错误“method_decorator() 仅需要 1 个参数(给定 2 个)”。
因此 - 如何在基于类的 View 中验证这两个因素(登录和权限)?
class PatientCreate(CreateView):
model = Patient
fields = '__all__'
@method_decorator(login_required, permission_required('patient.session.can_add_patient'))
def dispatch(self, *args, **kwargs):
return super(PatientCreate, self).dispatch(*args, **kwargs)
谢谢!
最佳答案
就您而言,permission_required
将为未登录的用户重定向到登录页面,因此您不需要使用 login_required
完全没有。
@method_decorator(permission_required('patient.session.can_add_patient')
def dispatch(self, *args, **kwargs):
...
如果你确实需要使用多个装饰器,那么你可以在 Django 1.9+ 中使用列表
decorators = [other_decorator, permission_required('patient.session.can_add_patient')]
class PatientCreate(CreateView):
model = Patient
fields = '__all__'
@method_decorator(decorators)
def dispatch(self, *args, **kwargs):
...
您还可以通过修饰类本身来缩短代码:
@method_decorator(decorators, name="dispatch")
class PatientCreate(CreateView):
model = Patient
fields = '__all__'
在 Django 1.8 及更早版本中,您无法将列表传递给 method_decorator
或者装饰类,所以你必须堆叠装饰器
class PatientCreate(CreateView):
model = Patient
fields = '__all__'
@method_decorator(other_decorator)
@method_decorator(permission_required('patient.session.can_add_patient'))
def dispatch(self, *args, **kwargs):
...
装饰器将按照传递给 method_decorator
的顺序处理请求。 。因此,对于上面的示例,other_decorator
将在 permission_required
之前运行.
关于django - @method_decorator 与 login_required 和permission_required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29673549/
我一直在遵循以下关于如何创建聊天机器人的指南 ( https://abhaykashyap.com/blog/post/tutorial-how-build-facebook-messenger-bo
我正在使用基于类的 View ,我想确保每个 View 都可以由登录用户和一种类型的用户访问(有两组用户 - 每组都有不同的权限) 。 我正在根据具有权限的文档来实现此操作(我正在使用 Django
我正在使用 django 基于类的 View 。假设有一个这样的ListView: @method_decorator(ensure_csrf_cookie, name='dispatch') cla
我整天都在研究这个。 我正在尝试为类 View 编写自定义权限,以检查用户是否在某个权限组中。 def rights_needed(reguest): if request.user.groups
我是django的新手,我很困惑Django中的@login_required和@method_decorator(login_required)有什么区别,我们应该使用哪个。提前致谢。 最佳答案 在
from django.contrib.auth.decorators import permission_required from django.utils.decorators imp
我是一名优秀的程序员,十分优秀!