Шаблон интерполяции Django включает переменную - PullRequest
3 голосов
/ 27 сентября 2011

Я делаю что-то вроде

{% for part in parts %}
     {% include "inc.html" with o=part prefix="part{{ forloop.counter0 }}_" %}
{% endfor %}

, где inc.html может быть чем-то вроде этого:

<p id="{{ prefix }}para">{{ o.text }}</p>

Я только что обнаружил, что префиксная переменная не интерполируется и "part{{ forloop.counter0 }}_" передается буквально.

Какой-нибудь относительно элегантный обходной путь?

1 Ответ

3 голосов
/ 27 сентября 2011

Я думаю, что лучшим решением было бы зарегистрировать тег_ключения, который бы обрабатывал операции part и forloop.counter:

@register.inclusion_tag("inc.html")
def inc_tag(part, loop_counter):
    prefix = 'part%s_' % (loop_counter,)
    context = {
        'part': part,
        'prefix': prefix,
    }
    return context

И вы бы назвали его так

{% for part in parts %}
    {% inc_tag part=part loop_counter=forloop.counter0 %}
{% endfor %}

Твой путь тоже выполним, но я бы не рекомендовал

{% for part in parts %}
    {% with "part"|add:forloop.counter0|add:"_" as prefx %}
        {% include "inc.html" with o=part prefix=prefix %}
    {% endwith %}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...