Добавить на сайт <title>в шаблоне Django, используя block.super - PullRequest
12 голосов
/ 01 декабря 2010

У меня есть 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 }}

Возможно ли это?

Ответы [ 3 ]

6 голосов
/ 20 декабря 2010

Обратите внимание, Django 1.2.3, кажется, уже делает то, что вы хотите.Предполагая, что SITE_NAME предоставляется через context_preprocessor, как показывает lzerscience, block.super должен предоставлять его через все уровни наследования.название «ИМЯ САЙТА - ИМЯ СЕКЦИИ - ГЛАВНАЯ» для меня.

3 голосов
/ 01 декабря 2010

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

В противном случае вы можете определить SITE_NAME в вашемsettings.py и иметь контекстный процессор, такой как

from django.conf import settings
def site_name(request):
    return {'SITE_NAME': settings.SITE_NAME}

, чтобы вы могли использовать {{ SITE_NAME }} в своих шаблонах - это может иметь смысл, потому что имя сайта может использоваться в других местах ...

0 голосов
/ 15 сентября 2014

Django 1.6.6

{{ block.super.super }} - возможно

Пытаюсь сейчас - сработало :) Но не официально ...

...