【发布时间】:2012-05-02 02:26:40
【问题描述】:
{% block content %}
{% for blog_dict in blogs|sort(reverse=True,attribute='date') if ((not file_name_filter) or blog_dict.filename==file_name_filter) and ((not category_filter) or blog_dict.category==category_filter) %}
<div id="post{{blog_dict.post_number}}-{{blog_dict.link_name}}">
{{blog_dict.date.strftime("%Y-%m-%d")}}
<a href="/posts/{{blog_dict.filename}}"><h1>{{blog_dict.heading}}</h1></a>
<!-- Place this tag where you want the +1 button to render -->
<div class="g-plusone" data-href="/posts/{{blog_dict.filename}}"></div>
{{blog_dict.post|safe}}
</div>
<br />
<br />
<br />
<img src="/images/page_divider.gif"><br />
{% endfor %}
{% endblock %}
如你所见,表达式越来越乱:
{% for blog_dict in blogs|sort(reverse=True,attribute='date') if ((not file_name_filter) or blog_dict.filename==file_name_filter) and ((not category_filter) or blog_dict.category==category_filter) %}
我尝试的另一个选项是在循环中放置两个嵌套的 if 语句来处理两个过滤器,但随后嵌套变得很大。
什么是最优雅的?
【问题讨论】:
-
我将在您的 Python 代码中执行排序和过滤,并将
blog_dicts 的结果序列作为blogs传递给模板。是否有理由需要在模板中执行此操作? -
模板的其他部分显示所有未过滤数据的预览。所以我需要传递所有数据。此外,我不希望我的 python 脚本过于关注数据的显示方式,我只希望它提供数据。不知道我是不是对的。
-
你可以写一个custom filter来返回过滤后的数据。
标签: python filter config jinja2 webapp2