繁体   English   中英

登录 URL 重定向问题

[英]Login URL redirecting issue

当我登录到我的 web 应用程序时,它不会重定向到创建的自定义重定向页面,而是重定向到 Django 中的默认帐户/配置文件 url。 以下是我的代码:

视图.py

def student_dashboard(request):
    if request.user.is_authenticated and request.user.is_student:
        render(request,'student/s_dashboard.html')
    elif request.user.is_authenticated and request.user.is_client:
        return redirect('client_dashboard')
    elif request.user.is_authenticated and request.user.is_supervisor:
        return redirect('supervisor_dashboard')
    else:
        return redirect('signin')
 def supervisor_dashboard(request):
    if request.user.is_authenticated and request.user.is_student:
        return render(request,'student/s_dashboard.html')
    elif request.user.is_authenticated and request.user.is_client:
        return redirect('client_dashboard')
    elif request.user.is_authenticated and request.user.is_supervisor:
        return redirect('supervisor_dashboard')
    else:
        return redirect('signin')
    
 def client_dashboard(request):
     if request.user.is_authenticated and request.user.is_student:
         return render(request,'student/s_dashboard.html')
     elif request.user.is_authenticated and request.user.is_client:
         return redirect('client_dashboard')
     elif request.user.is_authenticated and request.user.is_supervisor:
         return redirect('supervisor_dashboard')
     else:
         return redirect('signin')

   def signin(request):
      if request.user.is_authenticated:
           if request.user.is_student:
               return redirect('student_dashboard')
           if request.user.is_cleint:
               return redirect('client_dashboard')
           if request.user.is_supervisor:
               return redirect('supervisor_dashboard')
 
      if request.method == 'POST':
           username = request.POST['username']
           password = request.POST['password']
           user = authenticate(request, username =username, password = password)
           print(user)
           if user is not None:
              login(request,user)
              if user.is_authenticated and user.is_student:               
                   return redirect('student_dashboard') #Go to student home
              elif user.is_authenticated and user.is_client:                                                                                    
                   return redirect('client_dashboard') #Go to teacher home      
              elif user.is_authenticated and user.is_supervisor:
                   return redirect('supervisor_dashboard')

     
            else:
                 form = AuthenticationForm()
                 return render(request,'registration/login.html',{'form':form})
 
       else:
            form = AuthenticationForm()
            return render(request, 'registration/login.html', {'form':form})

网址.py

from django.contrib import admin
from django.urls import path, include
from CPRS_admin.views import *
from CPRS_admin.HOD_views import * 

urlpatterns = [
    path("admin/", admin.site.urls),
    path("home/", home_view, name="home"),
    path("student/", student_view, name="student"),
    path("group/", group_view, name="group"),
    path("admin/", admin.site.urls),
    path("accounts/", include("django.contrib.auth.urls")),
    path("accounts/login/",signin,name="login"),
    path(
        "accounts/signup/student/", StudentSignUpView.as_view(), name="student_signup"
    ),
    path("accounts/signup/client/", ClientSignUpView.as_view(), name="client_signup"),
    path(
        "accounts/signup/supervisor/",
        SupervisorSignUpView.as_view(),
        name="supervisor_signup",
    ),
    path("coordinator/dashboard", admin_dashboard, name="admin_dashboard"),
    path("coordinator/search", search, name="search_page"),
    path("coordinator/projects", project, name="projects"),
    path("student/dashboard", student_dashboard, name="student_dashboard"),
    path("supervisor/dashboard", supervisor_dashboard, name="supervisor_dashboard"),
    path("client/dashboard", client_dashboard, name="client_dashboard"),
    path("main/",main_view,name="main"),
    path("client/addproject",AddProjectView.as_view(),name="add_project"),
    
    path("coordinator/student_list",student_view_list,name="student_list"),

    path("coordinator/project_list",project,name="project_list"), 

    path("coordinator/add_student_group",add_student_group,name="add_student_group"),
    path("coordinator/client_list",clientview_list,name="client_list"),
    
]

这是登录后显示的错误。它重定向到默认的 url,即帐户/配置文件,即使添加了自定义重定向,如 views.py 中所示。

错误

您永远不会进入自己的登录视图,因为之前的路径还包括.../login/ 通过包含的 auth.urls:

    path("accounts/", include("django.contrib.auth.urls")),
    path("accounts/login/",signin,name="login"),

您可以更改顺序:

   path("accounts/login/",signin,name="login"),
   path("accounts/", include("django.contrib.auth.urls"))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM