【问题标题】:Nest braces in square brackets in a list with flask jinja2?在烧瓶 jinja2 列表中的方括号中嵌套括号?
【发布时间】: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) 甚至没有接近我的问题,也没有帮助我。

【问题讨论】:

  • 你好。我认为我们将结束这个问题,因为它是如此广泛,一次似乎有两个或三个问题,而且这个问题真的不太可能被其他人重现。但不要害羞,一定要尝试清楚你的下一个问题!

标签: python html flask jinja2


【解决方案1】:

我在一周内遇到了这个问题,我突然明白了。如您所见,frame_choice = Column(String(250)) 是一个字符串,所以我在frame_choice = Column(Integer) 中更改了它,一切正常!

【讨论】:

    猜你喜欢
    • 2019-08-11
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    • 1970-01-01
    • 2022-12-10
    • 2020-04-27
    相关资源
    最近更新 更多