如何将 is_staff 用户重定向到 Django 中的自定义模板?
Posted
技术标签:
【中文标题】如何将 is_staff 用户重定向到 Django 中的自定义模板?【英文标题】:How to redirect is_staff user to custom template in Django? 【发布时间】:2021-01-14 20:42:47 【问题描述】:我有一个简单的问题:我尝试根据用户角色(员工/普通)将登录页面重定向到另一个页面。普通用户拥有自己的仪表板,员工用户拥有整体仪表板。
普通用户的重定向功能运行良好。但是,对于员工用户,它不断将我重定向到 django-admin 页面而不是我的自定义模板。
我尝试了this,但它不起作用。
views.py
#login
def login(request):
if request.user.is_authenticated:
if request.user.is_staff:
return redirect('staff_dashboard')
else:
return redirect('user_dashboard')
else:
if request.method == "POST":
username = request.POST.get("username")
password = request.POST.get("password")
user = auth.authenticate(request,username=username,password=password)
if user is not None:
if user.is_staff:
auth.login(request,user)
return redirect('staff_dashboard')
else:
auth.login(request,user)
return redirect('user_dashboard')
else:
messages.info(request,"Username or Password is incorrect")
return redirect('login')
#staff_dashboard
@login_required(login_url='login')
def staff_dashboard(request):
vid_size = []
img_query_set = model_images.objects.all()
img_query_set_count = model_images.objects.all().count()
vid_query_set = model_videos.objects.all()
vid_query_set_count = model_videos.objects.all().count()
for item in vid_query_set:
size = round(item.vid_path.size / 1000000,1)
vid_size.append(size)
context =
"img_query_set": img_query_set,
"vid_query_set": vid_query_set,
"img_query_set_count": img_query_set_count,
"vid_query_set_count": vid_query_set_count,
return render(request,'admin/index.html',context)
urls.py
from django.urls import path
from . import views
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = [
path('', views.home, name='home'),
path('login', views.login, name='login'),
path('user/dashboard', views.user_dashboard, name='user_dashboard'),
path('staff/dashboard', views.staff_dashboard, name='staff_dashboard'),
]
【问题讨论】:
您是否尝试过使用自己的模板进行此操作?您似乎正在使用 django 管理模板,因此这可能是您的问题的一部分。 它会正确地重定向你,并正确呈现 admin/index.html 模板 【参考方案1】:刚刚解决了。您不能在模板文件夹中创建名称为“admin”的文件。它将与 Django-admin 模板冲突。我重命名了文件并且它现在可以工作了。
【讨论】:
以上是关于如何将 is_staff 用户重定向到 Django 中的自定义模板?的主要内容,如果未能解决你的问题,请参考以下文章