-->

Django的 - 限制超级用户访问的网址(Django - limiting url access

2019-10-23 19:50发布

在我的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的装饰,但想到我可能会丢失一些比较明显的解决方案。

Answer 1:

很晚答复!...

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

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

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

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



Answer 2:

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



Answer 3:

使用user_passes_test装饰。

例:

from django.contrib.auth.decorators import user_passes_test

@user_passes_test(lambda u: u.is_superuser)

def sample_view(request):


文章来源: Django - limiting url access to superusers