2013-04-03 4 views
0

Предположим, у меня есть набор шаблонов, которые используют блок HTML несколько раз. Я хотел бы поместить повторно использованный HTML в {% include %} или {% block reused-stuff %}, но один из HTML-тегов - это href, который, как представляется, не может генерировать динамически. (Это похоже на проблему хлебных крошек.)Django template dynamic URL

Ниже приведен пример повторного HTML:

<td><a href="{% url analytics:buyer-stats:brand client.slug %}">{{ row.brand }}</a></td> 
<td>{{ row.num_leads }}</td> 
<td>{{ row.num_sold }}</td> 
<td>{{ row.revenue }}</td> 
<td>{{ row.scrub_rate|default_if_none:"N/A" }}</td> 

Обратите внимание на первый <td> включает href к analytics:buyer-stats:brand. Мне нужно динамически изменить это значение на несколько других значений (в зависимости от шаблона с использованием этого include или block). то есть analytics:buyer-stats:offer, analytics:buyer-stats:client и т. д.

Любые предложения по выполнению этого на стороне шаблона? Достаточно легко передать объект row с использованием with row=my_data, но как передать значение URL?

EDIT: Этот проект использует Django 1.4 и Python 2.7.3.

ответ

1

Этот синтаксис недействителен в Django 1.5, и именно по этой причине. Теперь вы должны использовать переменную или литеральную строку, окруженную кавычками, для имени URL-адреса. Это упрощает работу с тем, что вам нравится: определить переменную контекста для имени представления и использовать ее в теге url.

+0

Я использую Django 1.4. Можно ли это сделать в 1.4? – Rico

+1

Вы можете использовать '{% load url from future%}' в верхней части шаблона, чтобы включить это. Обратите внимание, что это изменит поведение для всех URL-адресов в этом шаблоне. –

+0

Извините, но я не выбрал ваш ответ в качестве решения, потому что у меня не было времени проверить, что это будет работать для моей ситуации. Спасибо за предложение. Я отвечу на ваш комментарий. – Rico