django - 插入 Django 模板包含变量

标签 django django-templates

我正在做类似的事情

{% 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 }}_"是按字面传递的。

任何相对优雅的解决方法?

最佳答案

我认为最好的解决方案是注册一个包含标签,它将处理 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 %}

关于django - 插入 Django 模板包含变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7574323/

相关文章:

python - Django 管理命令未正确导入

django - 如何缓存 FileField 中的文件以避免重复(Django、DRF)

python - Django 中的替代管理员

python - django 模板引擎中的印地语或波斯语数字

django - 在模板标签的引号中插入变量

Django递归模型

django 管理员 : queryset filter not working

Django:获取相关对象的相关对象并传递给模板

django - 在 Django 中保存外键相关表单

database - 没有数据库的django模型