Добавить в сайт <title> в шаблоне Django, используя block.super
У меня есть 3 шаблона Django:
base.html
<title>{% block title %} SITE NAME {% endblock %}</title>
default.html
{% extends "base.html" %}
{% block title %} {{ block.super }} - SECTION NAME {% endblock %}
main.html
{% extends "default.html" %}
{% block title %} {{ block.super }} {% endblock %}
Я хотел бы получить ИМЯ САЙТА в шаблоне main.html, т.е. содержимое родителя родительского блока. Что-то вроде
{{ block.super.super }}
Возможно ли это?
Ответы
Ответ 1
Я не думаю, что это возможно. Как раз для вашей конкретной проблемы, я думаю, это может быть решено, если вы поместите имя сайта перед блоком и используйте блок, чтобы добавить что-то к имени сайта.
В противном случае вы можете определить SITE_NAME
в settings.py
и иметь контекстный процессор, например
from django.conf import settings
def site_name(request):
return {'SITE_NAME': settings.SITE_NAME}
чтобы вы могли использовать {{ SITE_NAME }}
в своих шаблонах - это может иметь смысл, потому что имя сайта может также использоваться в других местах...
Ответ 2
Примечание. Django 1.2.3, похоже, уже делает то, что вы хотите. Предполагая, что SITE_NAME отображается через контекстный_preprocessor, как иллюстрирует lzerscience, block.super должен выставлять его через все уровни наследования.
main.html
{% extends "default.html" %}
{% block title %} {{ block.super }} - MAIN{% endblock %}
Это отображает для меня название "ИМЯ САЙТА - НАЗВАНИЕ СЕКЦИИ - ГЛАВНОЕ".
Ответ 3
Django 1.6.6
{{ block.super.super }}
- возможно
Я сейчас пытаюсь - работал:)
Но официально не...