如何在Django模板中将模板变量传递给切片过滤器

时间:2018-06-24 11:51:57

标签: python django django-templates

我正在尝试使用变量在Django模板中切片循环

常规方式

{% for article in module.module_article_key.module_article_category.article_category_key.all|slice:":2" %}
    {{ article.article_title }}
{% endfor %}

需要

{% for article in module.module_article_key.module_article_category.article_category_key.all|slice:":module.module_article_key.module_article_count" %}
    {{ article.article_title }}
{% endfor %}

所以我们有工作变量 {{module.module_article_key.module_article_count}}

通常,此变量会为该模块提供存储的整数值,但是我使用它来切片循环-不会发生

1 个答案:

答案 0 :(得分:3)

您需要先将module_article_count转换为字符串,然后通过嵌套的{% with %}制作articleSlice并在slice过滤器中使用生成的模板变量,如下所示:

{% with  articleCount=module.module_article_key.module_article_count|stringformat:"s" %}
    {% with  articleSlice=":"|add:articleCount %}
        {% for article in module.module_article_key.module_article_category.article_category_key.all|slice:articleSlice %}
            {{ article.article_title }}
        {% endfor %}
    {% endwith %}
{% endwith %}