2010-06-29 48 views
1

在我的URL配置URL访问,我有:Django的 - 限制超级用户

url(r'^sssssh/(.*)', staff_only_app.site.root), 

我希望做的是限制这种应用到超级用户的任何访问。 我尝试这样做:

url(r'^sssssh/(.*)', user_passes_test(staff_only_app.site.root, lambda u: u.is_superuser)), 

但抱怨说,装修恰恰1的说法,我说出了两个。

我想通过functools.partial来装饰currator,但是我想我可能会错过一些更明显的解决方案。

+1

为什么你想在urls.py中做到这一点,你应该这样做views.py – KillianDS 2010-06-29 10:30:41

+1

@KillianDS我想在urls.py中做到这一点,因为我不想去编辑所有的视图在一个可重复使用的应用程序,我没有写。 – Agos 2010-06-29 21:22:00

回答

3

很晚答复...

我认为这只是一个快速和肮脏的语法挂断:

url(r'^sssssh/(.*)', user_passes_test(lambda u: u.is_superuser)(staff_only_app.site.root), 

^我认为这是奇怪,但正确的语法将参数传递给装饰器。

但第二个想法,你只能装饰视图功能,而不是整个网站。

-1

使用user_passes_test修饰符。

!例如:

from django.contrib.auth.decorators import user_passes_test 

@user_passes_test(lambda u: u.is_superuser) 

def sample_view(request): 
+1

请仔细阅读下面的问题和评论,说明我为什么要(编辑)在网址中执行此操作,而不是在视图中执行此操作。 – Agos 2011-02-22 23:57:31