Как передать аргумент методу переменной шаблона в Django? - PullRequest
23 голосов
/ 14 сентября 2009

Я использую библиотеку lxml для определения переменной (категории) в представлении. lxml предоставляет метод .get для извлечения пользовательских атрибутов. Я хотел бы использовать его в шаблоне так:

{{ category.get("foo") }} 

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

{{ category.get "foo" }}

Не удалось разобрать остаток: '"foo"' из "category.get" foo "'

Я предполагаю, что с моим синтаксисом что-то не так, но Google не помог. В документации Django говорится, что методы ищутся с помощью .

Ответы [ 3 ]

32 голосов
/ 14 сентября 2009

Нельзя передать аргумент вызываемому атрибуту, как этот. Либо потяните значение в представлении, либо напишите собственный тег шаблона, чтобы сделать это.

15 голосов
/ 14 декабря 2009

Я согласен с философией отделения логики от дизайна, но есть исключение. В настоящее время я пишу метод get_image (height = xxx, width = xxx) для модели. Понятно, что именно дизайнеру шаблонов следует выбрать размер изображения на последнем этапе. Хотя я полагаю, что правильно написать собственный тег, но зачем ограничивать?

12 голосов
/ 19 ноября 2009

Здесь я написал хак для вызова функции и передачи аргументов http://www.sprklab.com/notes/13-passing-arguments-to-functions-in-django-template/

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