Использование строковых литералов в качестве параметров для шаблонных тегов в шаблонах Django - PullRequest
6 голосов
/ 12 мая 2009

Одна из вещей, которые я часто выполняю, это передача строковых литералов в качестве параметров тегам или функциям шаблона; например:

{% url my-url 'my_param' %}

К сожалению, движок шаблонов django не позволяет вам сделать это. Так что я часто делаю это в своем коде вида:

my_context_dict['MY_PARAM'] = 'my_param'

а затем, на мой взгляд, код:

{% url my-url MY_PARAM %}

Или создание серии сопоставлений URL, которых я лично стараюсь избегать.

Можно ли использовать строковый литерал в шаблонах Django? Или, возможно, более элегантное решение? Я не видел ничего здесь или в документации.

Ответы [ 3 ]

13 голосов
/ 12 мая 2009

Это неправильно, но правильно.

<a href="{% url someting "param1" "param2" %}">text</a>

Вложенные "" не должны работать. Они делают. Материал Django {% %} просто извлекается из HTML без учета окружающего контекста. Так что «дублированные» " на самом деле вообще не дублируются.

12 голосов
/ 12 мая 2009

Используйте двойные кавычки вместо одинарных кавычек:

{% url my_view "my_param" %}
1 голос
/ 13 марта 2013

Очень странно - у меня есть проект django, который использует одинарные кавычки для передачи строкового значения, и он прекрасно работает.

<a href="{% url categories 'vendor' %}"</a>
<a href="{% url categories 'crew' %}"</a>

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

...