django - 即使在用户登录 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'),
]
不确定我是否错误地实施了某些事情。
解决方案
我认为你需要像这样交换你的 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 登录,没有传递参数)
推荐阅读
- ruby-on-rails - 在 Rails 应用程序中创建 html 标签包装器
- selenium - 流利的等待不忽略异常
- solr - Solr, cast an array of strings to an array of payloads
- python - 如何从 numpy 的数组中选择特定列的值最大的行?
- c++ - 为什么在这种情况下括号不能改变 C++ 运算符的优先级?
- recaptcha - Limitations per reCaptcha (Google) account
- azure - How to escape json in dynamic content in ADF V2 in Azure?
- javascript - Calling typescript interface from commonJS function call
- node.js - Mongoose saves schema to different collection
- reactjs - setTimeOut is not delayed second time but works correctly first