从模板内渲染Django模板

时间:2015-01-09 01:31:53

标签: python django templates

所以,我想在循环中渲染一些对象。 I.E.在主页上呈现5个最新帖子中的每个帖子。无论用户是否登录,这些帖子中的每一个都将以不同方式显示。

我有一个问题:我将如何进行这种区分?我想像这样的模板

{% if user.is_logged_in %}
    {% for post in latest_posts %}
        post.render_long_form
    {% endfor %}
{% else %}
    {% for post in latest_posts %}
        post.render_short_form
    {% endfor %}
{% endif %}

如何让函数render_short_formrender_long_form返回相应的HTML snippits?我希望他们可以调用其他模板进行渲染。

谢谢!

1 个答案:

答案 0 :(得分:2)

为什么不使用{% include %}代码?

{% if user.is_logged_in %}
    {% for post in latest_posts %}
        {% include 'long_form.html' %}
    {% endfor %}
{% else %}
    {% for post in latest_posts %}
        {% include 'short_form.html' %}
    {% endfor %}
{% endif %}

或者,更多DRY版本:

{% for post in latest_posts %}
    {% if user.is_logged_in %}
        {% include 'long_form.html' %}
    {% else %}
        {% include 'short_form.html' %}
    {% endif %}
{% endfor %}