Изменить шаблон выхода администратора Django? - PullRequest
5 голосов
/ 04 июля 2011

Я хочу сделать очень небольшое изменение на странице выхода администратора 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 docs , в которой рекомендуется использовать AdminSite для внесения изменений в базовый шаблон и на страницы выхода из системы, но действительно ли это необходимо для такого крошечного изменения?

Если так, у кого-нибудь есть пример того, как я могу настроить шаблон выхода из системы? Я довольно напуган инструкциями для AdminSite.

Спасибо.

Ответы [ 2 ]

6 голосов
/ 04 июля 2011

Причиной завершения manage.py runserver является цикл наследования.

Django загружает «registration / logged_out.html» и пытается загрузить своего родителя: registration / logged_out.html. К сожалению, parent является одним и тем же шаблоном, и поэтому мы попадаем в цикл наследования шаблонов. 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 %}
1 голос
/ 04 июля 2011

Вы получаете цикл импорта шаблонов.Загрузчик шаблонов не будет загружать форму базового шаблона, где бы вы ни установили Django, потому что он видит, что у вас есть этот шаблон в папке шаблонов вашего проекта.

Я думаю, вам нужно скопировать выход из системы.шаблон, из которого у вас установлен Django в папку шаблонов вашего проекта.К сожалению, это единственный способ, который работает.Этот метод также означает, что если обновления производятся для шаблонов администратора Django, вам придется вручную применять их к измененным шаблонам.

...