Django权限:只访问一个视图方法

时间:2015-07-17 13:07:24

标签: python django django-permissions

您好我有一个项目,其中包含许多方法。每个方法都映射到不同的URL。

views.py

def method1(request):
    print 'hello world'

def method2(request):
    print 'hello world2'

def method3(request):
    print 'hello world3'

我想要的是做一些与权限相关的事情,这样用户只能访问一种方法。 例如 也就是说,如果用户拥有method2()的权限,他/她只能访问此方法。他/她不能访问method1()或method2()。

如此处所述[{3}},我可以使用user_pass_test()函数,但这样我只能限制一个。

如果我想限制除了一个以外的所有方法,我必须在所有现有方法中应用装饰器,并且我的项目中有很多方法。

这里我想限制除一个以外的所有。

请帮忙。

1 个答案:

答案 0 :(得分:1)

Django的权限可能是或不是判断给定用户是否可以访问给定视图的正确方法,但是您没有充分了解上下文。

但无论如何......这里主要有两种解决方案:使用适当的user_passes_test(yourtesthere)permission_required(perm)装饰器装饰每个视图,或使用process_view装饰use a custom middleware方法。