如果客户登录并且有权查看管理员授予他的数据,则他在登录后将看到数据,但如果管理员没有授予他权限,则会显示此消息您无权查看此页面
就我而言,无论管理员授予什么权限,此消息始终会出现您无权查看此页面
from .decorators import unathenticated_user, allowed_users,staff_only
from django.contrib.auth.models import Group
@login_required(login_url='loginpage')
@staff_only
def adminpage(request):
return render(request, 'Homepage/adminsite.html')
def loginpage(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user:
username = request.POST['username']
request.session['username'] = username
return redirect('adminpage')
else:
return render(request, 'Homepage/adminlogin.html')
return render(request, 'Homepage/adminlogin.html')
这是我的装饰器.py
from django.http import HttpResponse
from django.shortcuts import redirect
def unauthenticated_user(view_func):
def wrapper_func(request, *args, **kwargs):
if request.user.is_staff:
return redirect('adminpage')
else:
return view_func(request, *args, **kwargs)
return wrapper_func
def allowed_users(allowed_roles=None):
if allowed_roles is None:
allowed_roles = []
def decorator(view_func):
def wrapper_func(request, *args, **kwargs):
group = None
if request.user.groups.exists():
return redirect('adminpage')
if group in allowed_roles:
return view_func(request, *args, **kwargs)
else:
return HttpResponse('You are not authorized to view this page')
return wrapper_func
return decorator
def staff_only(view_func):
def wrapper_function(request, *args, **kwargs):
group = None
if request.user.groups.exists():
group = request.user.groups.all()[0].name
if group == 'registrar':
return redirect('adminpage')
if group == 'admin':
return view_func(request, *args, **kwargs)
return wrapper_function
这是我的管理网站(权限)
这是我的登录信息
登录后(更新错误)
提前致谢
这是我的html
NOTE我不知道这个 html 是否有效。由于我的逻辑错误,我很抱歉,我只想打印管理员授予客户的权限。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
{% if request.user|group:"registrar" %}
<p>User belongs to my group</p>
{% else %}
<p>User does not belong to my group</p>
{% endif %}
</body>
</html>
这是我的 urls.py
urlpatterns = [
path('adminpage/', Homepage.views.adminpage, name='adminpage'),
path('loginpage/', Homepage.views.loginpage, name='loginpage'),
]
这是我的 html 中的错误
if you have any question, I am happy to provide an answer inorder to answer this question