Django - 如何将use_pass_test与url一起使用

时间:2013-12-23 00:01:40

标签: python django url

我正在尝试在我的网址对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 superusershttp://jonatkinson.co.uk/djangos-user_passes_test-and-generic-views/

但在我的情况下它不起作用。

谢谢。

2 个答案:

答案 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