Python 3.x 在jinja中为动态数据选择默认值
我正在尝试为一个select字段设置默认值,该字段是在html页面中使用jinja使用for循环动态生成的,我在文档中找不到这样做的解决方案。基本上,如果可能的话,我需要一种使用jinja设置selectfield默认值的方法 在python中,我无法从routes端或forms端设置默认值,因为字段是动态生成的,默认值需要根据选择的不同而有所不同。如果使用stringfield而不是selectfield,则可以设置默认值 有人能帮我找到解决这个问题的办法吗?我可以切换到另一个formfield来代替selectfield吗 第二个问题是,如果我将id和名称设置为生成html页面时的id和名称,那么我是否可以构建并使用手动html字段,在提交时该字段仍然可以与其他wtform字段一起工作?如果可能的话,我可能有办法用这种方式解决我的问题 我希望将stringfield转换为selectfield的代码:Python 3.x 在jinja中为动态数据选择默认值,python-3.x,flask,jinja2,flask-wtforms,Python 3.x,Flask,Jinja2,Flask Wtforms,我正在尝试为一个select字段设置默认值,该字段是在html页面中使用jinja使用for循环动态生成的,我在文档中找不到这样做的解决方案。基本上,如果可能的话,我需要一种使用jinja设置selectfield默认值的方法 在python中,我无法从routes端或forms端设置默认值,因为字段是动态生成的,默认值需要根据选择的不同而有所不同。如果使用stringfield而不是selectfield,则可以设置默认值 有人能帮我找到解决这个问题的办法吗?我可以切换到另一个formfiel
{% for d in data %}
{{ form.type.label(class="label") }}
{{ form.type(class="field", value=d.type) }}
{% endfor %}
谢谢这是我能想到的唯一方法 您可以在
视图.py中执行类似的操作
@app.route('/')
def index():
data=[{'name':'red'}, {'name':'green'}, {'name':'blue'}]
return render_template('index.html', data=data)
在你的html
模板中
<select name="colour" class="select-field">
{% set default_value = 'green' %}
{% for d in data %}
<option value="{{ d.name }}" {% if d.name == default_value %}selected="selected"{% endif %}>{{ d.name }}</option>
{% endfor %}
</select>
{%set默认值='绿色'%}
{数据%中d的%s}
{{d.name}
{%endfor%}
关于使用WTForms和Jinja2以及动态数据设置SelectField的默认值,您可以使用以下示例:
首先,在表单中定义SelectField
class MyForm(FlaskForm):
country_id = SelectField("Country", coerce=int) #[('1','USA'),..])
然后查询数据库以构建可用值的列表
@app.route("/...")
def country():
form = MyForm()
available_countries=db.session.query(Country).all()
countries_list=[(i.id, i.name) for i in available_countries]
form.country_id.choices = countries_list
最后,在html中,使用process_数据定义所选值。
注:未使用z变量
{% set z = form.country_id.process_data(countryNameVariable) %}
{{ form.country_id(class="")}}
默认值是选项之一,还是第一个或随机值?是的,默认值是选项之一choices@viz228我希望是你所期待的是的,但是你想如何标记为默认值,基于什么标准?它基于从我的数据库中提取的数据。我编辑了这篇主要文章,其中包括了一个我如何处理StringFields的例子CountryName变量是什么?我得到了这样的信息:{{form.country\u id.label}
{{form.country\u id(size=10)}我如何适应?