2013-07-31 3 views
9

Кажется, что это должно быть просто, но я должен делать что-то неправильно. Раньше я расширил шаблоны админов для отдельных приложений, но это первый раз, когда я пытался расширить что-то по всем направлениям.Как правильно расширить шаблон django admin/base.html?

Я хочу изменить цвет текста справки по всему администратору, поэтому я хочу расширить блок extrastyle шаблона base.html.

Так в моей основной папке шаблонов я создал администратор/base.html с этим кодом в нем:

{% extends 'admin/base.html' %} 

{% block extrastyle %} 
    {# Changing the color of the help text across the entire admin #} 
    <style> 
     .help, p.help { 
      font-size: 10px !important; 
      color: #f00; 
     } 
    </style> 
{% endblock %} 

Теперь, когда я пытаюсь получить доступ к администратору, сервер полностью выходит из строя с «шинами 10» ошибка. Я считаю, что это потому, что он пытается расширить себя. Поскольку Django сначала выглядит в папках шаблонов приложений, {% extend 'admin/base.html'%} находит себя первым, и мир взрывается.

Однако, если я попытаюсь разместить базовый html в другом месте, это не сработает. Если я поместил его в одно из моих приложений, он будет работать только для этого приложения, но если я поместил его где-нибудь еще, он просто проигнорируется.

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

ответ

17

Действительно, ваша проблема - бесконечный цикл рекурсии, поскольку base.html расширяется.

Чтобы достичь того, чего вы хотите, вы должны переопределение админ/base_site.html вместо (который, в свою очередь, расширяет base.html). Таким образом, вы можете заменить только интересующие вас блоки.

+0

Ах, вот что я искал. Спасибо! –

Смежные вопросы