在我的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的装饰,但想到我可能会丢失一些比较明显的解决方案。
很晚答复!...
我认为这只是一个快速和肮脏的语法挂断:
url(r'^sssssh/(.*)', user_passes_test(lambda u: u.is_superuser)(staff_only_app.site.root),
^我认为这是传递参数给装饰奇怪,但正确的语法。
但在第二个想法,你只能装点视图功能,而不是整个网站。
写类似于Django的login_required或f.ex.装饰器 这一个http://djangosnippets.org/snippets/254/和装饰图。
使用user_passes_test装饰。
例:
from django.contrib.auth.decorators import user_passes_test
@user_passes_test(lambda u: u.is_superuser)
def sample_view(request):