Как изменить шаблон многоразового приложения в Django? - PullRequest
1 голос
/ 09 января 2010

Например, допустим, я хочу изменить блок breadcrumbs шаблона admin/change_list.html в администраторе Django. Если я попытаюсь переопределить этот шаблон следующим образом:

{% extends "admin/change_list.html" %}
{% block breadcrumbs %} ... my changes ... {% endblock %}

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

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

1 Ответ

3 голосов
/ 09 января 2010

Полная информация о переопределении шаблонов администратора находится здесь: http://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-admin-templates.

Если вы пытаетесь изменить шаблон только для одного приложения, вы можете просто сохранить его как app_label/change_list.html. Если вы пытаетесь изменить его для одной модели, вы можете сохранить его как app_label/model_as_underscores/change_list.html.

Если вы пытаетесь изменить его для всех своих вещей, вы можете создать новый шаблон с другим именем и установить его имя в качестве атрибута change_list_template на всех ваших подклассах ModelAdmin. (На ModelAdmin вы можете сделать то же самое с change_form_template, delete_confirmation_template и object_history_template. На AdminSite вы можете переопределить атрибуты index_template и login_template таким же образом.)

Оба эти метода позволят вам расширить исходные шаблоны администратора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...