- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不明白为什么需要权限的装饰器不起作用。我想只允许工作人员访问 View 。我已经尝试过了
@permission_required('request.user.is_staff',login_url="../admin")
def series_info(request):
...
还有
@permission_required('user.is_staff',login_url="../admin")
def series_info(request):
...
作为 super 用户,我可以访问该 View ,但我作为员工创建的任何用户都无法访问该 View ,并且会被重定向到登录 URL 页面。我测试了 login_required 装饰器,效果很好。
最佳答案
permission_required()
必须传递权限名称,而不是字符串中的 Python 表达式。试试这个:
from contrib.auth.decorators import user_passes_test
def staff_required(login_url=None):
return user_passes_test(lambda u: u.is_staff, login_url=login_url)
@staff_required(login_url="../admin")
def series_info(request)
...
<小时/>
Thanks. That does work. Do you have an example of how to use permission_required? From the documentation docs.djangoproject.com/en/1.0/… and djangobook.com/en/2.0/chapter14 I thought what I had should work.
重新阅读您发布的链接; permission_required()
将测试用户是否已被授予特定权限。它不测试用户对象的属性。
来自http://www.djangobook.com/en/2.0/chapter14/ :
def vote(request):
if request.user.is_authenticated() and request.user.has_perm('polls.can_vote'):
# vote here
else:
return HttpResponse("You can't vote in this poll.")
#
#
# # #
###
#
def user_can_vote(user):
return user.is_authenticated() and user.has_perm("polls.can_vote")
@user_passes_test(user_can_vote, login_url="/login/")
def vote(request):
# vote here
#
#
# # #
###
#
from django.contrib.auth.decorators import permission_required
@permission_required('polls.can_vote', login_url="/login/")
def vote(request):
# vote here
关于django - Permission_required 装饰器不适合我,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1269444/
我不明白为什么需要权限的装饰器不起作用。我想只允许工作人员访问 View 。我已经尝试过了 @permission_required('request.user.is_staff',login_url
View .py class templateList(PermissionRequiredMixin, TemplateView): permission_required = 'accou
如何使 Django permission_required 装饰器不将已登录的用户重定向到登录页面,而是显示一些诸如权限不足之类的消息? 谢谢你。 最佳答案 一个快速而肮脏的解决方案是编写自己的装饰
我正在测试一组广泛使用“permission_required”装饰器的 Django 应用程序。在我所拥有的大多数 View 中,这源自 302 HTTP 响应。 我的问题是:有什么方法可以避免或停
我在理解新 CBV 的工作原理时遇到了一些困难。我的问题是,我需要在所有 View 中要求登录,并且在其中一些 View 中需要特定权限。在基于函数的 View 中,我使用 View 中的 @perm
from django.contrib.auth.decorators import permission_required from django.utils.decorators imp
我是一名优秀的程序员,十分优秀!