Небезопасное перенаправление на URL с протоколом 'account'
Я пытаюсь перенаправить на страницу входа с обратным url через промежуточное ПО .
Я получаю эту ошибку, может ли кто-нибудь ответить на вопрос, почему я получаю эту ошибку и как решить эту ошибку
from django.shortcuts import redirect
def auth_middleware(get_response):
def middleware(request):
print("Middleware")
return_url = request.META['PATH_INFO']
if not request.session.get('user_id'):
return redirect(f'account:login?return_url={return_url}')
response = get_response(request)
return response
return middleware
Django сделает редирект на account:login?return_url=some_url
, но браузер этого не понимает: поскольку он видит URL, начинающийся с account:
, он предполагает, что account:
является протоколом.
Мы можем обратить представление с помощью reverse(…)
[Django-doc]:
from django.urls import reverse
from django.http import HttpResponseRedirect
def auth_middleware(get_response):
def middleware(request):
print("Middleware")
return_url = request.META['PATH_INFO']
if not request.session.get('user_id'):
return HttpResponseRedirect(f'{reverse("account:login")}?return_url={return_url}')
response = get_response(request)
return response
return middleware