Подстановка переменных Django в тег включаемого шаблона - PullRequest
3 голосов
/ 31 октября 2011

У меня есть интернационализированный сайт Django 1.3, и я хочу сделать это:

{% include "snippets/button.html" with button_text=_("Logout {{ user.username }} now") %}

И snippets/button.html выглядит так:

<button
  type="{{ button_type|default:_('submit') %}"
  class="all_my special classes"
  {% if button_title %} title="{{ button_title }}"{% endif %}>
  <span class=ui-button-text>{{ button_text|default:_("Submit") }}</span>
</button>

Единственный способ увидеть это - что-то вроде:

{% include "snippets/button.html" with button_text="Logout "|add:user.username|add:" now" %}

Но это недопустимо, так как переводимые строки необходимо указывать, где произойдет подстановка переменной. Я видел Шаблон интерполяции Django, включающий переменную , но это не распространяется на это использование.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2017

Я думаю, что в этом случае вам лучше всего добавить уже переведенную строку в ваш контекст.

В вашем views.py:

...
'button_text': _("Logout {} now").format(user.username),
...

Тогда в вашем шаблоне:

{% include "snippets/button.html" with button_text=button_text %}
0 голосов
/ 21 декабря 2011

Нечто подобное может позволить вам продолжать:

{% blocktrans with value|filter as myvar %}
  This will have {{ myvar }} inside.
{% endblocktrans %}

отсюда http://www.djangobook.com/en/1.0/chapter18/

Должно работать с включениями, но я не проверял.

...