Django - Как передать словарь в тег шаблона - PullRequest
3 голосов
/ 10 февраля 2011

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

{{ form.openid_identifier|htmlattributes:{'class' : 'something', 'id': 'openid_identifier'} }}

Можно ли написать что-то подобное на шаблоне?

Ответы [ 2 ]

3 голосов
/ 10 февраля 2011

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

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

Однако ничто не мешает вам, например, передать строку, похожую на словарь, и затем проанализировать ее в теге шаблона:

{{ form.openid_identifier|htmlattributes:"{'class' : 'something', 'id': 'openid_identifier'}" }}

В этом случае ваш пользовательский фильтр должен правильно проанализировать это как словарь.

Может быть полезно знать, почему вы используете решение, которое используете. Обычно я устанавливаю класс для объекта Form из класса формы (обычно в forms.py). Или, если вам нужен более точный контроль над рассматриваемым тегом, просто укажите его:

<input type="text" name="openid_identifier" id="openid_identifier" class="something" />
0 голосов
/ 21 февраля 2011

By берет_context = True и передает нужные вам данные из представления.

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