编辑Django管理界面的注销模板?

5
我想对Django管理后台的注销页面进行非常小的修改。
我知道如何使用模板来覆盖Django管理后台的模板,因此我已经尝试对注销文件执行相同的操作。
我在`templates/registration/logged_out.html`设置了一个新的模板。该文件的内容如下:
{% extends "registration/logged_out.html" %}
{% block content %}
<p>Thanks for using the site.</p>
<p><a href="../">Log in again</a></p>
<p><a href="/">Return to the home page</a></p>
{% endblock %}

然而,肯定有问题,因为当我尝试退出管理员时,网站停止运行。
我找到了Django文档页面,建议使用AdminSite来更改基本模板和注销页面,但是对于如此微小的更改,这真的有必要吗?
如果有必要,是否有人可以给出一个设置注销模板的示例?我对AdminSite的说明感到有些害怕。
谢谢。

“网站停止运行”是什么意思? - Daniel Roseman
抱歉,我应该表述得更清楚。我正在使用 manage.py 运行网站,但是 manage.py 突然终止了。请告诉我是否可以更有用地进行调试! - Richard
2个回答

6

manage.py runserver终止的原因是继承循环。

Django加载了“registration/logged_out.html”,并尝试加载其父级:“registration/logged_out.html”。不幸的是,父模板与同一模板相同,因此我们陷入了模板继承循环中。manage.py将以堆栈溢出错误的某些变体终止...

您可以通过扩展原始“registration/logged_out.html”的父级 ->“admin/base_site.html”轻松解决此问题。即:

{% extends "admin/base_site.html" %}
{% load i18n %}

{% block breadcrumbs %}<div class="breadcrumbs"><a href="../">{% trans 'Home' %}</a></div>{% endblock %}

{% block content %}
<p>Thanks for using the site.</p>
<p><a href="../">Log in again</a></p>
<p><a href="/">Return to the home page</a></p>
{% endblock %}

你的答案有一个小错误。"registration/logger_out.html" 应该是 "registration/logged_out.html"。 - SkyFox

1

你遇到了一个模板导入循环。模板加载器无法从Django安装的任何位置加载基础模板,因为它发现你在项目的模板文件夹中有该模板。

我认为你需要将登出模板从Django安装的位置复制到你的项目模板文件夹中。不幸的是,这似乎是唯一可行的方法。这种方法还意味着,如果对Django管理模板进行更新,你必须手动应用这些更新到你修改过的模板中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接