Django custome login redirection middleware redirection problem says ERR_TOO_MANY_REDIRECTS

привет друзья мне нужна помощь я хочу перенаправить пользователя когда он пытается зайти на страницу в моем django

settings.py is

MIDDLEWARE = ['cart.middleware.LoginRedirectMiddleware']

url.py это (home - имя приложения)

path('',views.login,name="login"),
path('home',views.home,name="home"),

middleware.py находится (расположен в mainapp)

def process_view(self, request, view_func, view_args, view_kwargs):
    """
    Called just before Django calls the view.
    """
    print("executed")
    if (request.user.is_authenticated):
       return redirect('home')
    else:
        return redirect('login')
  1. Полагаю, у вас есть параметры в views.login / views.home? Если да, то вам следует добавить args или kwargs в обратную сторону редиректа? redirect('home', *args, **kwargs)
  2. Используйте return redirect('/some/url/') вместо return redirect('home')
  3. .

Ref:https://docs.djangoproject.com/en/4.0/topics/http/shortcuts/#redirect

Надеюсь, это может помочь

Причина вашей ошибки в том, что ваше промежуточное ПО перенаправляет пользователя только при любом исходе if-заявления - поэтому ваш код постоянно перенаправляет пользователя, даже если он попадает на главную страницу - отсюда и ошибка ERR_TOO_MANY_REDIRECTS.

Вам нужно указать, что вы хотите перенаправлять на 'home', если пользователь аутентифицирован и пытается получить доступ к странице входа.

if (request.user.is_authenticated and request.path == '/login/'):
   return redirect('home')
else:
   return redirect('login')

Ваш фактический request.path может выглядеть иначе, что-то вроде /accounts/login/ также часто встречается.

Вернуться на верх