如何将 is_staff 用户重定向到 Django 中的自定义模板?
How to redirect is_staff user to custom template in Django?
我有一个简单的问题:我试图根据用户角色将登录页面重定向到另一个页面 (staff/normal)。普通用户有自己的仪表板,员工用户有整体仪表板。
普通用户的重定向功能运行良好。但是,对于员工用户,它一直将我重定向到 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'),
]
刚刚解决了。您不能在模板文件夹中创建名称为 'admin' 的文件。它将与 Django-admin 模板冲突。我重命名了文件,它现在可以正常工作了。
我有一个简单的问题:我试图根据用户角色将登录页面重定向到另一个页面 (staff/normal)。普通用户有自己的仪表板,员工用户有整体仪表板。
普通用户的重定向功能运行良好。但是,对于员工用户,它一直将我重定向到 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'),
]
刚刚解决了。您不能在模板文件夹中创建名称为 'admin' 的文件。它将与 Django-admin 模板冲突。我重命名了文件,它现在可以正常工作了。