如何在渲染模板中使用Jinja而不在html页面中显示渲染数据?

时间:2020-06-20 15:45:47

标签: python flask jinja2

{% for item in dlist %}
      <p>{{ item }}</p>
{% endfor %}

{% for i in range(dlist|length) %}
    {{ dlist.pop(0) }}
{% endfor %}

使用列表“ dlist”之后,我想清除其上的数据,以便在下一次迭代时,列表从大小0开始。但是,如果我使用dlist.pop(0)这样做,则数据被打印在我的html页面上,我不想要那样。我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果要完全清除列表,可以使用clear()方法清除列表。方法can be read from the official documentation的详细信息。

{{}}分隔符将显示结果,即使它是None值也是如此。我们需要阻止它,因为我们只想清除列表,并且我们不希望在执行它后显示None。我在分隔符内添加了一个条件,以从输出中隐藏None

app.py

from flask import Flask, render_template


app = Flask(__name__)

@app.route("/", methods=["GET"])
def home():
    dlist = ["Ahmedur", "Rahman", "Shovon", "arsho"]
    return render_template("data.html", dlist=dlist)

data.html

{% for item in dlist %}
    <p>{{ item }}</p>
{% endfor %}

{{ dlist.clear() if dlist.clear()}}

<hr>

{% for item in dlist %}
    <p>{{ item }}</p>
{% endfor %}

输出:

clear list in jinja2 template

hr标记之后的第二个for循环在输出中未显示任何值。因为执行dlist方法后clear()不包含任何值。