Django:如何验证具有某些特殊权限的用户

时间:2019-04-30 09:30:42

标签: django django-models django-templates django-views

here is the permission that i assign to user you can see the image here. 我是Django的新手。我正在一个项目中,我想登录一个经理。管理员不是此处的管理员或超级用户,但管理员具有由管理员从后端授予的某些权限。我希望如果用户/经理具有特定权限,那么它将呈现不同的页面。 我已经为管理员完成了此操作,但我不知道该如何为拥有一定权限的用户执行此操作。任何帮助将不胜感激。

这是我的views.py,用于验证用户和管理员。

def login(request):
if request.method =='POST':
    # print(request.POST)
    username = request.POST['username']
    password = request.POST['password']

    user = auth.authenticate(username=username, password=password)

    if user is not None:
        auth.login(request, user)
        # return redirect('index')

        if user.is_superuser:
            return redirect('manager')

        elif user.has_perm('app.edit_task'):
            return redirect ('master')

        else:
            return redirect ('index')
    else:
        messages.error(request, 'Invalid Credentials')
        return redirect('login')    
else: 
    return render(request, 'vadash/sign-in.html')


here is my model.py

class manager(models.Model):
 class Meta:
    permissions = [
        ("edit_task", "can edit the task"),
    ]

我该如何认证拥有特殊权限的用户/管理员。

1 个答案:

答案 0 :(得分:1)

您可以使用has_perm方法检查用户是否具有指定的权限。要根据用户的权限重定向用户,您可以执行以下操作:

if user.has_perm('manager_permission'):
   return redirect('manager')
else:
   return redirect('index')

如果要检查多个权限,则可以改用has_perms。参见documentation