Здравствуйте. Не так давно открыл для себя замечательный фреймворк Django. К сожалению, обнаружил некоторые ограничения встроенного движка шаблонов (например, неполноценный if). Погуглив и почитав отзывы решил использовать Jinja 2 как наиболее совместимый с движком Django. Возникла такая проблема: в Django есть такой удобный тег в шаблонах, как url, позволяющий по имени функции-хэндлера и ее параметрам генерировать url. В Jinja 2 такого, похоже, нет.
Можно ли как-то это реализовать?

Если вам не хватает движка шаблонов Django у вас проблемы с MVC.

Как в рамках движка шаблонов Django вывести какие-нибудь объекты на странице (например, фотографии в галерее) в таблицу по четыре в ряд? Единственный выход, который я вижу - это разбивать список картинок на стороне хэндлера в список кортежей, в каждом из которых четыре объекта.
Можно во view:
step = 4
rows = [items[x:x + step] for x in xrange(0, len(items), step]


А можно и в template:
<table>
<tr>
{% for item in items %}
<td>{{ item.name }}</td>
{% if forloop.counter|divisibleby:"4" and not forloop.last %}
    </tr><tr>
{% endif %}
{% endfor %}
</tr>
</table>

Возникла такая проблема: в Django есть такой удобный тег в шаблонах, как url, позволяющий по имени функции-хэндлера и ее параметрам генерировать url. В Jinja 2 такого, похоже, нет.

Логично, что нету. Jinja - это же не веб-фреймворк, она не знает, что есть урлы, ORM и т.д :-) Напишите свой jinja-тэг, который будет принимать параметры, передавать их джанговскому url-тэгу и возвращать результат. Я бы рекомендовал для начала разобраться с Django-шаблонами. Поработать с ними хотя бы месяц, а пото уже искать альтернативы.

Last edited Jan. 23, 2009, 7:32 p.m.

Хотя бы месяц с джанго шаблонами я поработал, только вот про фильтр divisibleby не знал, спасибо :).

Тогда попробуйте пару раз прочитать эту доку http://docs.djangoproject.com/en/dev/ref/templates/builtins/ - в голове засядут названия и потом вы, возможно, вспомните нужное в трудную минуту )