Как использовать python для объекта в функции «for» в шаблоне django? - PullRequest
2 голосов
/ 08 апреля 2011

Я хочу иметь возможность извлекать некоторые данные в python на основе объекта в функции "for" в шаблоне.

В следующем примере я хотел бы сделать что-то с example вне системы шаблонов, поэтому я не буду ограничен языком шаблонов, но вместо этого могу использовать python:

#django_template.html

{% for example in queryset %}
    #do something to example with python
{% endfor %}

Я знаю, что это возможно с тегом шаблона, но мне было интересно, не было ли 'Это более простой способ.Возможно ли это?

РЕДАКТИРОВАТЬ: я могу сделать это в представлении:

for example in queryset:
    #Extract data based on example

Но проблема в том, что я не могу использовать "{%, например, в queryset%}"в шаблоне, а затем получите данные, которые я сделал для каждого конкретного примера в представлении.

Ответы [ 2 ]

2 голосов
/ 08 апреля 2011

Это не так, как работает Джанго. Если вы хотите сделать что-то «вне» языка шаблона, вы делаете это в функции просмотра.

Язык шаблонов намеренно ограничен только представлением.

Без обработки.

(Вы можете немного выдумать правила с помощью свойств и дескрипторов, но не делайте этого. Это ухудшает производительность и смущает остальных из нас. Обрабатываете ли вы только свои функции представления, пожалуйста.)

0 голосов
/ 08 апреля 2011

Если 'example' - это экземпляр класса, которым вы управляете, то вы можете вызывать произвольные методы класса в шаблоне, чтобы, если вы хотите что-то сделать, например, использовать специальный красивый метод печати, вы можете вызвать методпросто вставив {{example.myfunction}}.

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

Использование «вычисления данных» немного пугающе - вам определенно не следует делать что-то тяжелое удаленно, такое как математикаили ввод / вывод из шаблона.Сохраняйте эти расчеты в своих представлениях: это разделение является заданным

...