Невозможно открыть какую-либо страницу при реализации следующего параметра в Django 3.2
Я использую Django 3.2. У меня есть мой пользовательский LoginView и я хотел бы реализовать следующий параметр, чтобы если кто-то попытается получить доступ к странице, где требуется вход, то после входа он перенаправит пользователя на эту страницу.
Я видел много решений, но они старые и я не могу реализовать их в своем коде.
views.py
class UpdatedLoginView(LoginView, CategoryMixin, TagMixin):
form_class = LoginForm
template_name = 'user/login.html'
redirect_field_name='main/homepage.html'
def post(self, request, *args, **kwargs):
form = self.form_class(request.POST)
if form.is_valid():
if 'next' in request.POST:
return redirect(request.POST.get('next'))
else:
return(redirect('homepage'))
else:
return render(request, self.redirect_field_name, {'form': form})
class HomePageView(LoginRequiredMixin, TemplateView):
template_name = "main/homepage.html"
login.html
<form method="post" novalidate>
{% csrf_token %}
{{ form|crispy }}
{% if request.GET.next %}
<input type="hidden" name="next" value="{{ request.GET.next }}"/>
{% endif %}
<button type="submit">Login</button>
</form>
settings.py
LOGIN_REDIRECT_URL = 'homepage'
LOGOUT_REDIRECT_URL = 'login'
Проблема с моим решением заключается в том, что оно перенаправляет меня на домашнюю страницу, но как только я нажимаю на любую гиперссылку, она снова перенаправляет меня на страницу входа, и url выглядит следующим образом:
http://127.0.0.1:8000/?login=/article_list/
Во всех моих представлениях я использую LoginRequiredMixin
mixin.
Как я могу решить эту проблему?