我试图使用use @permission_required
装饰器,由于某种原因装饰器被完全忽略了。我甚至可以拼错了许可,我没有任何错误。我正在测试的用户不是管理员,也没有权限,但正在处理视图,就像装饰者甚至不在那里一样。
我错过了什么或做错了什么?
from django.contrib.auth.decorators import permission_required
@permission_required('my_app.change_model', login_url="/login/")
def myview(request):
# my view here
如果我未登录,我已正确重定向到/login/
页面。但是,一旦我登录,将忽略权限检查,并且在没有任何权限的情况下为所有登录用户处理视图。
答案 0 :(得分:0)
需要内部权限的装饰器在'change_model'中提供您的模型名称。例如'change_country',即在这种情况下,国家/地区是型号名称。我遵循的工作流程是,我创建了一个名为“常规”的小组,并授予该小组创建国家的权限。我还在“常规”组下创建了一个测试用户。我使用了django管理功能。为了测试最终结果,我已经登录了测试用户。
它像一种魅力一样工作,在下面共享了一段代码片段作为提示:
from django.contrib.auth.decorators import permission_required
@permission_required('appname.add_country')
def countryCreate(request, template_name='appname/country/create.html'):
# your code goes here...