Как обрабатывать переменные в шаблонах наследования - PullRequest
0 голосов
/ 06 мая 2009

Я просто хочу определить атрибут id тега body в дочернем шаблоне. Первое решение отлично работает:

base.html:

[body{% block bodyid %}{% endblock %}]

child.html:

{% block bodyid %} id="myId"{% endblock %}

Это просто и круто! Но я не люблю указывать id = "myId" в каждом дочернем шаблоне. Я хочу просто отправить значение 'myId' в родительский шаблон, где оно помещается в id = "....". Итак, я изобрел этот метод:

base.html:

[body{% block bodyid %} id={{ bodyid }}{% endblock %}]

child.html:

{% block bodyid %}
    {% with 'myId' as bodyid %}
        {{ block.super }}
    {% endwith %}
{% endblock %}

Но сравнивать первое решение ужасно и нудно. Есть ли хороший способ сделать это?

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

Ответы [ 2 ]

2 голосов
/ 06 мая 2009

В базовом шаблоне:

<body id="{% block bodyid %}{% endblock %}">

В дочернем шаблоне:

{% block bodyid %}myId{% endblock %}

Если я правильно понимаю ваш вопрос, этого должно быть достаточно для достижения того, чего вы хотите; отправлять только действительный идентификатор (myId) в базовый шаблон.

0 голосов
/ 06 мая 2009

Вы, если хотите, устанавливаете это с помощью своего кода - так, чтобы ваши идентификаторы были частью вашего объекта контекста, и поэтому их не нужно вводить в дочерние шаблоны, только представления, которые их вызывают.

Затем вы можете указать базовому шаблону, что нужно получить идентификатор из объекта контекста, или, скорее, просто использовать для него синтаксис шаблона:

<body id="{{ body_id }}">

Личные предпочтения здесь, конечно, и это зависит от структуры ваших шаблонов и представлений, но это так, как я бы это сделал.

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