Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.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 对应用程序的自定义访问_Django - Fatal编程技术网

Django 对应用程序的自定义访问

Django 对应用程序的自定义访问,django,Django,我有一个关于Django和授权的小问题。 我有一个应用程序,必须通过用户谁是在某种组织访问。 e、 g:如果用户属于组织类型1,他可以,否则他不能 我应该使用权限还是使用自定义中间件?使用user\u passes\u testdecorator来完成 from django.contrib.auth.decorators import login_required,user_passes_test def is_auth(u): #u is the request.user i

我有一个关于Django和授权的小问题。 我有一个应用程序,必须通过用户谁是在某种组织访问。 e、 g:如果用户属于组织类型1,他可以,否则他不能


我应该使用权限还是使用自定义中间件?

使用
user\u passes\u test
decorator来完成

from django.contrib.auth.decorators import login_required,user_passes_test
def is_auth(u):
    #u is the request.user
    if user_auth_for_page(u):
            return True
    return False

def user_auth_for_page(u):
    #your Authentication function here
    #if user is in org1 return true

@user_passes_test(lambda u: is_auth(u),login_url='/home/')
@login_required
def page(request):
    ...
同样,最好的方法是将其与django团体结合使用

def is_auth(u,g):
    l=u.groups.all()
    for i in l:
        if i.name==g:
            return True
    return False
@user_passes_test(lambda u: is_auth(u,'admin'),login_url='/home/')

您可以使用
django.contrib.auth中的
组和
权限
在应用程序中管理组织,我不想使用组来实现这一点