在模板级别设置 Jinja2/FlaskForms 单选按钮默认值

问题描述 投票:0回答:1

给定一个 FlaskForm:

from flask_wtf import FlaskForm
from wtforms import RadioField, SubmitField

class DialectPreferenceForm(FlaskForm):
       dialect = RadioField('SQL Choice', 
          choices=[('firebird','Firebird'),('mysql','MySQL'),('bothsql','Both')])
       dialect_submit = SubmitField("Set choice")

和模板

 <form method="POST" action="">
  {{ form_sql.hidden_tag() }}
  {{ form_sql.dialect }}<br/>
  {{ form_sql.dialect_submit }}
  </form>

...可以在模板级别设置默认单选按钮吗?我想做这样的事情,给定传递的参数param

 <form method="POST" action="">
  {{ form_sql.hidden_tag() }}

  {% if param == 1 %}
       {{ form_sql.dialect(default='firebird') }}
  {% elif param == 2 %}
       {{ form_sql.dialect(default='mysql') }}
  {% elif param == 3 %}
       {{ form_sql.dialect(default='bothsql') }}
  {% endif %}

  {{ form_sql.dialect_submit }}
  </form>

这个问题的目标是类似的结果,但该模板使用原始 HTML 而不是 Flask WTF。我不想将其设置为

flask jinja2 flask-wtforms
1个回答
0
投票

我不确定这是否是您正在寻找的,但一种选择是在实例化表单时在端点内设置默认值。为此,您可以使用表单的

data
属性,或传递带有值的关键字。键或关键字应与表单字段的变量相对应。
通常这用于预填充表单字段,但在您的情况下它可能会有所帮助。

您可以在此处找到文档。

dialect = 'mysql'

form_sql = DialectPreferenceForm(request.form, dialect=dialect)
# or
form_sql = DialectPreferenceForm(request.form, data={ 'dialect': dialect })
© www.soinside.com 2019 - 2024. All rights reserved.