Ответ 1
Вы не можете передать аргумент вызываемому атрибуту, подобному этому. Либо вытащите значение в представлении, либо напишите собственный тег шаблона, чтобы сделать это.
Я использую библиотеку lxml для определения переменной (категории) в представлении. lxml предоставляет метод .get
для получения пользовательских атрибутов. Я хотел бы использовать его в шаблоне так:
{{ category.get("foo") }}
Я знаю, что при использовании переменных шаблона нет необходимости использовать скобки, но я получаю следующую ошибку:
{{ category.get "foo" }}
Не удалось разобрать остаток: ' "foo" ' из 'category.get "foo" '
Я предполагаю, что с моим синтаксисом что-то не так, но Google не помог. Документы django говорят, что методы просматриваются с помощью .
Вы не можете передать аргумент вызываемому атрибуту, подобному этому. Либо вытащите значение в представлении, либо напишите собственный тег шаблона, чтобы сделать это.
Я согласен с философией ветки логики от дизайна, но есть исключение. В настоящее время я пишу метод get_image (height = xxx, width = xxx) для модели. Очевидно, что разработчик шаблонов должен решить размер изображения как последний этап. Хотя я полагаю, что правильная вещь - написать пользовательский тег, но зачем ограничивать?
Здесь я написал хак, чтобы вызвать функцию и передать аргументы http://www.sprklab.com/notes/13-passing-arguments-to-functions-in-django-template/