1

在我的 urlconf 中,我有:

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

我想做的是将对该应用程序的任何访问限制为超级用户。我试过这个:

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

但它抱怨 decorate 只需要 1 个参数,而我给了两个参数。

我正在考虑通过 functools.partial 对装饰器进行咖喱,但我认为我可能会错过一些更明显的解决方案。

4

3 回答 3

4

很晚才回复!...

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

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

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

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

于 2011-09-09T14:31:42.560 回答
1

编写一个类似于 Django 的 login_required 或 f.ex 的装饰器。这个http://djangosnippets.org/snippets/254/并装饰视图。

于 2010-06-29T13:43:04.530 回答
0

使用 user_passes_test 装饰器。

例子:

from django.contrib.auth.decorators import user_passes_test

@user_passes_test(lambda u: u.is_superuser)

def sample_view(request):
于 2011-02-22T11:05:27.233 回答