gpt4 book ai didi

python - 将 LoginView 和 LogoutView 与自定义模板结合使用

转载 作者:太空宇宙 更新时间:2023-11-03 19:53:23 27 4
gpt4 key购买 nike

我尝试将 django.contrib.auth.LoginView 和 auth_views.LogoutView.as_view() 与自定义模板一起使用,而不以任何方式干扰管理站点,无论应用程序在设置中加载的顺序如何.py 文件。目前还没有成功。

这是我的 urls.py:

from django.urls import path, include 
from django.contrib.auth import views as auth_views
from . import views

urlpatterns = [
# ...
path('login/', auth_views.LoginView.as_view(), {'template_name': 'registration/login.html'}, name = 'login'),
path('logout/', auth_views.LogoutView.as_view(), {'template_name': 'registration/logged_out.html'}, name = 'logout')
]

登录 View 会加载我的自定义模板,但注销 View 不会加载并使用默认模板。无法弄清楚为什么,终端中没有出现诊断信息...请帮忙。谢谢! enter image description here enter image description here

最佳答案

使用带有 .as_view() 的基于类的 View ,您正在实例化 View 的实例,因此更改的属性需要为 passed into .as_view() method call itself .

如果您想渲染 View 模板,则不要重定向到 LOGOUT_REDIRECT_URL - 设置 next_page to None .

path('logout/',
auth_views.LogoutView.as_view(
template_name='registration/logged_out.html',
next_page=None
),
name = 'logout'
)
<小时/>

是的,如果您的模板是从每个应用的 templates 目录中加载的 django.template.loaders.app_directories.Loader (如果 settings.TEMPLATES[0]['APP_DIRS'] = True 也是这种情况) - Django 将在 INSTALLED_APPS 中加载/搜索每个应用程序内的模板,因此,为了覆盖 admin 模板,您需要在 INSTALLED_APPS 中比 django.contrib.admin 更早地加载它们。

但是,这可能并不总是理想的。

为了更清楚起见,您可以为您的 django 项目和其中的应用程序使用一个全局 templates 目录,并在 settings.TEMPLATES[0]['DIRS'] 中设置其路径>.

或者,只要您已经提供了自定义模板的路径,请使用备用名称/路径以避免与基本模板发生冲突。

关于python - 将 LoginView 和 LogoutView 与自定义模板结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59692899/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com