如何避免在Django中重复模板?

时间:2017-03-14 20:15:30

标签: python django django-templates

我在以下几个模板上重复了以下代码:

{% for element in elements %}
    <div class="some-class">
        <div class="another-class">
            <div class="row">
                <div class="col-xs-3">
                    <img class="img-responsive" alt="{{ entry.user }} avatar" style="border-radius: 50%; width: 100%;" src="{{ entry.avatar_url}}">
                </div>
                <div class="col-xs-9" style="some-style">
                    {% if entry.data1 %}<small>{% trans entry.data1 %}</small><br>{% endif %}
                    {% trans entry.data2 %} {% trans entry.data2 %}
                    <br>
                    <small style="some-style">
                        {% blocktrans with timestamp=entry.timestamp|naturaltime %}
                            {{ timestamp }}
                         {% endblocktrans %}
                    </small>
                 </div>
            </div>
        </div>
    </div>
{% endfor %}

我想知道避免重复这段代码的最佳方法是什么,我是Django的新手,我非常感谢你的帮助。

修改 如果我需要将内容传递给该模板,该怎么办?它是否会使用与包含文件中的上下文相同的上下文,还是应该以某种方式指示上下文?

2 个答案:

答案 0 :(得分:2)

这很简单:

将这段HTML放在一个名为reusable.html的文件中,然后将include放在其他模板中。

像这样:

<!-- Other HTML -->

... html stuff here

{% include 'reusable.html' %}

现在,如果你想将参数传递给reusable.html,你可以这样做:

`{% include 'reusable.hmtl' with var_a='abc' var_b=123 %}`

答案 1 :(得分:1)

在其自己的模板中进行设置,例如new_template.html,并在任意位置使用{% include 'new_template.html' %}