在我的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)),
但它抱怨装饰只需要1个参数,我给了两个。
我正在考虑通过functools.partial来修饰装饰器,但我想我可能会错过一些更明显的解决方案。
答案 0 :(得分:4)
很晚回复!...
我认为这只是一个快速而又脏的语法挂断:
url(r'^sssssh/(.*)', user_passes_test(lambda u: u.is_superuser)(staff_only_app.site.root),
^我认为这是将参数传递给装饰器的奇怪但正确的语法。
但是在第二个想法中,你只能装饰视图功能,而不是整个网站。
答案 1 :(得分:1)
写一个类似于Django的login_required或f.ex的装饰器。这一个http://djangosnippets.org/snippets/254/并装饰视图。
答案 2 :(得分: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):