使用Jinja(Python)限制结果

时间:2014-11-24 14:10:39

标签: python jinja2

Jinja是否有限制根据格式显示的结果?

例如,如果我有一个包含以下数据的CSV:

Agent ID DOB
152      31/07/1993
175      05/12/1997

使用如下模板设置:

filename = self._Report(self.date, self.time_from, self.time_to)
env = jinja2.Environment()
env.loader = jinja2.FileSystemLoader('templates')
template = env.get_template('testtemplate.html')

rdr = csv.DictReader( open(filename, "r" ) )
csv_data = [ row for row in rdr ]

return template.render( data=csv_data )

这样的模板:

{% for row in data %}
<td>{{ row['Agent ID']] }}</td>
<td>{{ row['DOB']]</td>
{% endfor %}

说我是否只想提供代理商ID 152的数据?

1 个答案:

答案 0 :(得分:2)

不要过滤Jinja中的数据。用Python过滤数据:

csv_data = [row for row in rdr if row['Agent ID'] == '152']

仍然会产生一个清单;如果您只期望一个结果,则可以限制CSV数据的读取以找到第一个匹配项:

csv_data = next((row for row in rdr if row['Agent ID'] == '152'), {})

现在生成一个字典,第一行匹配代理ID,如果不存在这样的行,则生成一个空字典。阅读在第一场比赛时停止。