Как обрабатывать переменные при наследовании шаблонов

StackOverflow https://stackoverflow.com/questions/827305

  •  05-07-2019
  •  | 
  •  

Вопрос

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

база.html:

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

ребенок.html:

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

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

база.html:

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

ребенок.html:

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

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

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

Это было полезно?

Решение

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

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

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

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

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

Другие советы

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top