【问题标题】:How to use <select> of flask-wtf in jinjia2?如何在jinja2中使用flask-wtf的<select>?
【发布时间】:2018-04-16 20:24:29
【问题描述】:

我想在 html“选择”字段中显示一个数据的“类别”。 数据来自view.py,数据的类别是“category2”。 我用jinjia2显示html:

render_temperlate(data=data,form=form,'data.html')

然后我在form.py中定义一个flask-wtf SelectField如下:

Class  CategoryForm(FlaskForm):
    category = SelectField(choices=[('','') , ("category 1","category 1"),("category2","category2")])

现在,我想在 web html“select”标签中显示我的数据类别(它的值为“capetory2”)。

在data.html文件(jinjia2)中,我尝试使用

{{form.category(option=data.category)}}

显示数据的类别(category2),但在网页中,该字段什么都没有。

我该怎么办?

【问题讨论】:

    标签: flask jinja2 flask-wtforms


    【解决方案1】:

    如果在创建时将值传递给表单,它将在呈现后在 HTML 表单中被选中,您不需要将其作为选项传递。

    import flask
    from flask_wtf import FlaskForm
    from jinja2 import Template
    from wtforms import SelectField
    
    class CategoryForm(FlaskForm):
        category = SelectField(choices=[('','') , ("category 1","category 1"),("category 2","category 2")])
    
        class Meta:
            csrf = False
    
    def index():
        cf = CategoryForm(category="category 1")
        return flask.render_template(
            Template("""
                    <html>
                    <body>
                        <form method="POST">
                            {{form.category()}}
                            <input type="submit">
                        </form>
                    </body>
                    </html>
                    """),
            form=cf)
    

    【讨论】:

    • 谢谢。在我的 data.html 中,表中有十行,例如:“ ...
      row1
      row2
      row3
      ” 我应该如何将 form.category.data 传递给每个“选择”字段?
    • 我不太了解 HTML,也无法理解您的问题。我认为最好单独提出一个问题让其他人回答。
    • 我已经通过 jquery 解决了这个问题。谢谢大家。后端将 select 值传给 jinja2 ,然后使用 jquery 将该值与 select 选项值进行比较,如果选项值与传递的值相同,则在选项中添加一个名为“selected”的属性。所以,选择字段可以显示网页中数据的类别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多