我正在尝试在我的网址对CBV和视图的定义中使用user_pass_test
。
我想对此使用类似的语法:
url (r'^question_detail-(?P<pk>\w+)$', user_passes_test(not_in_group_chef,
login_url='public_connexion')Question_detail.as_view(), name='detail_question')
我发现: Django - limiting url access to superusers 和 http://jonatkinson.co.uk/djangos-user_passes_test-and-generic-views/
但在我的情况下它不起作用。
谢谢。
答案 0 :(得分:2)
你在代码示例中缺少一对括号,这有用吗?
url (
r'^question_detail-(?P<pk>\w+)$',
user_passes_test(not_in_group_chef, login_url='public_connexion')(
Question_detail.as_view()
),
name='detail_question'
)
答案 1 :(得分:0)
Anentropic是对的,谢谢!
对于有同样问题的人:
我解决的第二个问题是:对于匿名用户,not_in_group_chef函数应验证用户是否已注册。这样,您就不会为匿名用户收到错误。
def not_in_group_chef(user):
if user:
retour = False
if User.objects.filter(username = user).count()==1:
utilisateur = User.objects.get(username = user)
if utilisateur.groups.filter(name='chef').count()==0:
retour = True
return retour
return retour
return False