与Python不同,在Jinja2中
for
循环有自己的名称空间;因此,在循环内设置的变量是循环的局部变量,一旦超出循环,同名变量将还原为外部作用域的变量。
namespace
解决此问题的对象:
{% set ns = namespace(last_year=0) %}
{% for article in dates %}
{% set year = article.date.strftime('%Y') %}
{% if ns.last_year != year %}
<h2 id="{{year }}" title="last_year={{ns.last_year}}"><a href="#{{year}}">{{ year }}</a></h2>
{% set ns.last_year = year %}