我有一个这样定义的路由:
[...]
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” 是在SQLAlchemy基础中动态创建的两个列表,使用python类,并且不为空:
[...]
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))
[...]
有什么方法可以完成我正在做的事情吗?
谢谢你
这个(Jinja表达式中的引用模板变量)甚至没有接近我的问题,也没有帮助我。
2条答案
按热度按时间vdzxcuhz1#
我在一周内遇到了这个问题,我突然明白了。正如你所看到的,
frame_choice = Column(String(250))
是一个字符串,所以我在frame_choice = Column(Integer)
中改变了它,一切都完美地工作了!mftmpeh82#