编辑Django管理员注销模板?

时间:2011-07-04 14:03:48

标签: django django-admin

我想对Django管理员注销页面进行非常小改动。

我知道如何使用模板来覆盖Django管理模板,因此我尝试使用logout文件执行相同的操作。

我在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 docs page建议使用AdminSite来更改基本模板和注销页面,但这对于这么小的变化真的有必要吗?

如果是这样,有没有人举例说明我如何设置注销模板?我对AdminSite的说明感到非常害怕。

感谢。

2 个答案:

答案 0 :(得分:5)

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

Django加载“registration / logged_out.html”并尝试加载它的父级:“registration / logged_out.html”。不幸的是,父是相同的模板,所以我们最终在模板继承循环。 Manage.py将以堆栈溢出错误的某种变体终止...

您可以通过扩展原始“registration / logged_out.html”的父级来轻松解决问题 - &gt; “管理/ 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 %}

答案 1 :(得分:1)

您正在获取模板导入循环。模板加载器不会在您安装Django的任何地方加载基本模板表单,因为它看到您在项目的模板文件夹中有该模板。

我认为您需要将登录模板从安装Django的位置复制到项目的模板文件夹中。不幸的是,这是唯一可行的方法。此方法还意味着,如果对Django管理模板进行了更新,则必须手动将它们应用于修改后的模板。