Объединение значения константы и переменной для значения шаблона по умолчанию - PullRequest
4 голосов
/ 30 декабря 2011

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

<span id="id1234" class="foo">
   Click <a href="/images/img1234.jpg">here to view image</a>.
</span>

В коде шаблона для span я бы хотел что-то вроде:

<span id="{{ spanid|default:'id'object.id }}" class="foo">

Аналогично, тег aбудет использовать:

<a href="/images/{{ image_file|default:'img'object.id'.jpg'"> here to view...

Это не работает, есть ли способ сделать это в синтаксисе шаблонов django и фильтра default?

Ответы [ 2 ]

4 голосов
/ 30 декабря 2011

Вы не можете. Тем не менее, default это просто ярлык. В этом случае ярлык не работает, но более длинная форма позволит вам делать то, что вам нужно:

{% if image_file %}{{ image_file }}{% else %}img{{ object.id }}.jpg{% endif %}
1 голос
/ 26 марта 2019

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

В моем проекте я просто использовал фильтр «add», чтобы объединить строку со значением переменной следующим образом:

{{ instance.image.url|default:STATIC_URL|add:"img/icons/my-image.svg" }}

ОБНОВЛЕНИЕ: я прошу прощения. После более тщательного тестирования я обнаружил, что представленное здесь решение на самом деле не работает. Я думал, что фильтр «add» будет применяться к значению по умолчанию, но в конечном итоге он будет применен к любому значению, к которому относится первая часть выражения.

Итак, если есть значение в {{ instance.image.url }}, то «img / icons / my-image.svg» объединяется с тем, что нарушает его.

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