代码之家  ›  专栏  ›  技术社区  ›  Agos

Django-限制超级用户访问url

  •  1
  • Agos  · 技术社区  · 14 年前

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

    我想做的是限制超级用户访问此应用程序。 我试过这个:

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

    但它抱怨说,decoration只需要一个参数,而我只给出了两个。

    我正在考虑通过functools.partial来讨好decorator,但是我想我可能缺少一些更明显的解决方案。

    3 回复  |  直到 14 年前
        1
  •  4
  •   asmoore82    13 年前

    很晚回复!。。。

    我想这只是一个又快又脏的语法问题:

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

    但仔细想想,你只能装饰查看功能,而不是整个网站。

        2
  •  1
  •   zalew    14 年前

    编写一个类似于Django's login\u required或f.ex的decorator。这个 http://djangosnippets.org/snippets/254/ 装饰风景。

        3
  •  0
  •   CoolBeans Jake    13 年前

    例子:

    from django.contrib.auth.decorators import user_passes_test
    
    @user_passes_test(lambda u: u.is_superuser)
    
    def sample_view(request):