gpt4 book ai didi

python - Django Group 权限如何在模板中打印

转载 作者:行者123 更新时间:2023-12-03 09:33:26 28 4
gpt4 key购买 nike

如果客户登录并且他有权限查看管理员给他的数据,他登录后他会看到数据,但是如果管理员没有给他权限,则会出现此消息您无权查看本页

在我的情况下,无论管理员授予什么权限,此消息总是出现 您无权查看本页

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')

这是我的decorators.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

这是我的管理站点(权限)

enter image description here

这是我的登录信息

enter image description here

我登录后(更新错误)

enter image description here

提前致谢

这是我的 html

注意 我不知道这个 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 中的错误

如果您有任何问题,我很乐意提供答案以回答这个问题 enter image description here

最佳答案

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 redirect("loginpage")

return wrapper_function

当用户没有所需的组时缺少此功能,在这种情况下,我们应该将用户重定向到登录页面发送到另一个页面或显示“您无权访问此页面”

关于python - Django Group 权限如何在模板中打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60798441/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com