html 嵌套括号中的方括号在一个列表与 flask jinja2?

kgsdhlau  于 2023-05-05  发布在  其他
关注(0)|答案(2)|浏览(170)

我有一个这样定义的路由:

[...]
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表达式中的引用模板变量)甚至没有接近我的问题,也没有帮助我。

vdzxcuhz

vdzxcuhz1#

我在一周内遇到了这个问题,我突然明白了。正如你所看到的,frame_choice = Column(String(250))是一个字符串,所以我在frame_choice = Column(Integer)中改变了它,一切都完美地工作了!

mftmpeh8

mftmpeh82#

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <audio controls autoplay>
        <source src="{{url_for('static' , filename='uploads/'+file)}}" type="audio/mpeg">
    Your browser does not support the audio element.
    </audio>
</body>
</html>

相关问题