在urlconf级别检查Django权限?

时间:2014-05-29 19:34:28

标签: django url permissions django-class-based-views

我有一个django应用程序,它将自己的urlconf包含在主要应用程序中。此应用程序中的每个页面都受到未授予普通用户的单独一组权限的保护。认为员工工作视图而不是用户'个人资料等。

我使用的是基于分类的视图,所以现在我已经获得了着陆视图的dispatch()检查权限,但是使用这种方法,我将不得不这样做对于每个视图。那只是不干。

所以我看到他们的选择是:

  • 创建专门检查此权限的mixin
  • 在每个视图中使用dispatch()手动检查
  • 以某种方式检查网址级别

有没有办法为整个网址包含设置权限要求?他们目前都有login_required()。

1 个答案:

答案 0 :(得分:0)

容易!

from django.contrib.auth.decorators import login_required

urlpatterns = patterns('',
    url(r'^foo/', login_required(include('foo.urls'))),
)

<强>更新

您想要检查用户权限,而不是用户身份验证。也很容易:

from django.contrib.auth.decorators import user_passes_test

urlpatterns = patterns('',
    url(r'^foo/', user_passes_test(lambda u: u.has_perm('perm'))(include('foo.urls'))),
)