首页 > 解决方案 > 即使在用户登录 Django 后,应用程序仍显示登录页面

问题描述

当我登录到 Django 项目然后按后退按钮或输入登录页面 url 时,即使用户通过身份验证,我也会再次获得登录页面。我尝试redirect_authenticated_user在下面的代码中添加 as:

from django.contrib import admin
from django.urls import path, include
from django.contrib.auth.decorators import login_required
from django.contrib.auth import views as auth_views
from django.conf.urls import url

admin.autodiscover()
admin.site.login = login_required(admin.site.login)

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/', include('django.contrib.auth.urls')),
    path('accounts/login/', auth_views.LoginView.as_view(redirect_authenticated_user=True), name='login'),
]

不确定我是否错误地实施了某些事情。

标签: djangoauthenticationredirect

解决方案


我认为你需要像这样交换你的 url 模式的顺序:

urlpatterns = [
    path('admin/', admin.site.urls),
    path('accounts/login/', auth_views.LoginView.as_view(redirect_authenticated_user=True), name='login'),
    path('accounts/', include('django.contrib.auth.urls')),
]

当您尝试访问端点时,Django 会将其与您的 urlpatterns 中的第一个合适的 url 匹配(在您的情况下,它是默认的 django 登录,没有传递参数)


推荐阅读