Django следующий параметр url

Я использую пользовательский Login View и пользовательскую страницу входа. Я не могу найти следующий параметр, который я хочу использовать, поэтому если в url есть следующий параметр, то пользователь перенаправляется на предыдущую страницу.

Как вы можете видеть в приведенном ниже коде, я использую django-crispy-forms и django-axes.

Проблема заключается в том, что я могу успешно перенаправлять пользователей на домашнюю страницу, но я не могу получить доступ к любым данным, которые видны для зарегистрированных пользователей (все представления ограничены для зарегистрированных пользователей), таким как электронная почта пользователя и контент. Более того, когда я пытаюсь нажать на любую гиперссылку, Django автоматически перенаправляет на страницу входа.

Когда я пытаюсь получить доступ к странице вручную, например, http://127.0.0.1:8000/articles, она перенаправляет меня на http://127.0.0.1:8000/accounts/login/?next=/articles/, что дает мне

Page not found (404) Request Method: GET Request URL: http://127.0.0.1:8000/accounts/login/?next=/articles/

views.py

class UpdatedLoginView(LoginView):
    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 ArticleListView(LoginRequiredMixin, ListView):
    template_name = 'articles/ArticleListView.html'
    model = Article
    paginate_by = 6
    queryset = Article.objects.filter(status=1)
    
    def get_context_data(self, **kwargs):
        context = super(ArticleListView, self).get_context_data(**kwargs)
        return context

login.html

<form method="post" class="login-form background" novalidate>
    {% csrf_token %}
    {{ form|crispy }}
    {% if request.GET.next %}
        <input type="hidden" name="next" value="{{ request.GET.next }}"/>
    {% endif %}
    <button type="submit" class="text-center mx-auto login-btn">Login</button>
</form>

urls.py

urlpatterns = [
    path('', views.UpdatedLoginView.as_view(), name='login'),
    path('logout/', views.logout_view, name='logout'),
    path('home/', views.HomePageView.as_view(), name='homepage'),
    path('articles/', views.ArticleListView.as_view(), name='article_list'),
]

settings.py

#AUTHORIZATION
AXES_FAILURE_LIMIT = 4
AXES_ONLY_USER_FAILURES = True
AXES_ENABLE_ADMIN = True
LOGIN_REDIRECT_URL = 'homepage'
LOGOUT_REDIRECT_URL = 'login'

Не могли бы вы проверить код и сообщить мне, что я делаю не так? Возможно, это связано с настройками, но я не уверен, в чем здесь дело. Нужно ли мне передавать следующий параметр всем представлениям? Если да, то как это лучше всего сделать?

в вашем приложении LOGIN_URL установлен в значение по умолчанию, т.е. "/accounts/login/"

но "/accounts/login/" не связан с представлением, поэтому веб-сервер возвращает 404 (не найдено).

Одним из способов решения проблемы является включение стандартного представления входа в систему путем добавления следующей строки в urlpatterns:

path("accounts/", include("django.contrib.auth.urls")),

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