Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django在调用视图方法之前添加访问URL的权限_Django_Python 2.7 - Fatal编程技术网

Django在调用视图方法之前添加访问URL的权限

Django在调用视图方法之前添加访问URL的权限,django,python-2.7,Django,Python 2.7,在上面的URL配置中,我只允许路由器A到特定的用户集,而剩余的B、C和D到特定的用户集。如何使用URL配置来实现这一点 请注意,我的应用程序已经有近80个URL,现在我无法编辑和添加每个方法的权限。所以我要做的是,一旦URL被调用,它就需要通过权限,然后才能真正调用views方法。请让我知道如何才能做到这一点。您可以创建如下custum decorator: urlpatterns = patterns('', url(r'^A/$', 'django.contrib.auth.views.lo

在上面的URL配置中,我只允许路由器A到特定的用户集,而剩余的B、C和D到特定的用户集。如何使用URL配置来实现这一点


请注意,我的应用程序已经有近80个URL,现在我无法编辑和添加每个方法的权限。所以我要做的是,一旦URL被调用,它就需要通过权限,然后才能真正调用views方法。请让我知道如何才能做到这一点。

您可以创建如下custum decorator:

urlpatterns = patterns('',
url(r'^A/$', 'django.contrib.auth.views.login'),
url(r'^B/$', logout_page),
url(r'^C/$', c_method),
url(r'^D/$', D_method),)
并在这样的函数中使用它

from django.core.exceptions import PermissionDenied
    def your_decorator_name(function):
        def wrap(request, *args, **kwargs):
            your condition
            if your conditioon is true == True:
                 return function(request, *args, **kwargs)
            else:
                 raise PermissionDenied

        wrap.__doc__ = function.__doc__
        wrap.__name__ = function.__name__
        return wrap

这一点也不清楚。你说的是什么“路由器”?@DanielRoseman我的意思是说,你已经创建了自定义装饰器,并在函数顶部使用它,在自定义装饰器中,你必须定义你的条件,在该条件下,你要引发权限被拒绝错误。@AbiWaqas一个例子就是在回答等待中发布
from ur_file_location import your_decorator_name
    @your_decorator_name
    def permision_demo(request):
        return 'hola'