Sco*_*tt 1 python jinja2 flask
我有两个清单:
seller = ["Bob", "Joe", "Tim"]
cash = [12, 25, 67]
Run Code Online (Sandbox Code Playgroud)
我在模板中传递了两个参数:
...
return render_template("sales.html", sellers=sellers, seller_cash=seller_cash)
Run Code Online (Sandbox Code Playgroud)
我想在同一个循环中呈现两个参数:
{% for seller in sellers %}
<p><strong>{{seller}}: {{cash}}</p>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
显然,这不起作用.有没有办法在同一个循环中有两个参数?
Jinja2没有横向合并列表的发件箱解决方案,但您可以利用内置的python zip创建单个列表的元组列表并将其传递给jinja模板引擎.您还需要重新编写jinja2循环,以便它可以读取元组列表
模板调用
return render_template("sales.html", seller_cash=zip(sellers, seller_cash)
Run Code Online (Sandbox Code Playgroud)
Jinja2 Loop
{% for seller, amount in seller_cash %}
<p><strong>{{seller}}: {{amount}}</p>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
或者,你可以使用jinja2.Environment全局命名空间,使python zip内置可用于jinja2
>>> env = jinja2.Environment()
>>> env.globals.update(zip=zip)
>>> tmpl = """{% for seller, amount in zip(sellers, cash) %}
<p><strong>{{seller}}: {{amount}}</p>
{% endfor %}"""
>>> env.from_string(tmpl).render(sellers=seller, cash=cash)
u'\n <p><strong>Bob: 12</p>\n\n <p><strong>Joe: 25</p>\n\n <p><strong>Tim: 67</p>\n'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1714 次 |
| 最近记录: |