#django #django-views #django-templates #django-urls #django-middleware
#django #django-просмотры #django-шаблоны #django-urls #django-промежуточное программное обеспечение
Вопрос:
Я пытаюсь получить доступ к моему представлению индекса, но я автоматически перенаправляюсь на представление show_login, я думаю, что проблема связана с моим пользовательским файлом промежуточного программного обеспечения
вот основной вид:
def indexmain(request):
return render(request, "main_template/index.html")
URL-адреса :
path('admin/', admin.site.urls),
path('accounts/',include('django.contrib.auth.urls')),
path('', views.ShowLoginPage, name="show_login"),
path('indexmain', views.indexmain,name="index"),
path('get_user_details', views.GetUserDetails),
path('logout_user', views.logout_user,name="logout"),
path('doLogin',views.doLogin,name="do_login"),
вот мой пользовательский файл промежуточного программного обеспечения:
from django.http import HttpResponseRedirect
from django.urls import reverse
from django.utils.deprecation import MiddlewareMixin
class LoginCheckMiddleWare(MiddlewareMixin):
def process_view(self,request,view_func,view_args,view_kwargs):
modulename=view_func.__module__
print(modulename)
user=request.user
if user.is_authenticated:
if user.user_type == "1":
if modulename == "gestion.HodViews":
pass
elif modulename == "gestion.views" or modulename == "django.views.static":
pass
elif modulename == "django.contrib.auth.views" or modulename =="django.contrib.admin.sites":
pass
else:
return HttpResponseRedirect(reverse("admin_home"))
elif user.user_type == "2":
if modulename == "gestion.StaffViews" or modulename == "gestion.EditResultVIewClass":
pass
elif modulename == "student_management_app.views" or modulename == "django.views.static":
pass
else:
return HttpResponseRedirect(reverse("staff_home"))
else:
return HttpResponseRedirect(reverse("show_login"))
else:
if request.path == reverse("index") or request.path == reverse("show_login") or request.path == reverse("do_login") or modulename == "django.contrib.auth.views" or modulename =="django.contrib.admin.sites" :
pass
else:
return HttpResponseRedirect(reverse("show_login"))
Ответ №1:
попробуйте удалить последнюю часть else, и это сработает
else:
return HttpResponseRedirect(reverse("show_login"))