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"),
]
我该如何认证拥有特殊权限的用户/管理员。
答案 0 :(得分:1)
您可以使用has_perm
方法检查用户是否具有指定的权限。要根据用户的权限重定向用户,您可以执行以下操作:
if user.has_perm('manager_permission'):
return redirect('manager')
else:
return redirect('index')
如果要检查多个权限,则可以改用has_perms
。参见documentation。