【发布时间】:2016-03-06 22:30:22
【问题描述】:
我有这样定义的路线:
[...]
reports = session.query(Report)
frames = session.query(Frame)
return render_template('reports.html', reports = reports, frames = frames)
[...]
一旦进入模板 "reports.html" 我会像那样循环 "reports" ({% for i in reports %})
现在在循环中,我尝试通过在列表的两个方括号内编写 Jinja 表达式来动态显示列表中的值:
[...]
<div>
{{frames[ {{i.frame_choice}} ].client_name}}
</div>
[...]
我得到这个错误:
jinja2.exceptions.TemplateSyntaxError: expected token ':', got '}'
这次尝试不带大括号的 jinja 表达式:
[...]
<div>
{{frames[ i.frame_choice ].client_name}}
</div>
[...]
我收到此错误:
UndefinedError: 'sqlalchemy.orm.query.Query object' has no attribute u'0'
但是 {{i.frame_choice}} 单独给我“0”,{{frames[0].client_name}} 给我“baroudeur”,但我无法合并它们。
"frames" 和 "reports" 是使用 python 类在 SQLAlchemy 基础中动态创建的 2 个列表,并且不为空:
[...]
class Frame(Base):
__tablename__ = 'frame'
id = Column(Integer, primary_key=True)
client_name = Column(String(250))
client_adress = Column(String(250))
client_phone = Column(String(10))
client_mail = Column(String(250))
class Report(Base):
__tablename__ = 'report'
frame_choice = Column(String(250))
[...]
有没有办法执行我正在尝试做的事情?
谢谢
这 (Reference template variable within Jinja expression) 甚至没有接近我的问题,也没有帮助我。
【问题讨论】:
-
你好。我认为我们将结束这个问题,因为它是如此广泛,一次似乎有两个或三个问题,而且这个问题真的不太可能被其他人重现。但不要害羞,一定要尝试清楚你的下一个问题!