Python 有没有办法从html模板中动态设置wtform radiofield的默认值?

Python 有没有办法从html模板中动态设置wtform radiofield的默认值?,python,flask,jinja2,wtforms,Python,Flask,Jinja2,Wtforms,我试图在HTML模板中动态设置一个radio字段的值,但我不确定如何设置默认选择。我之所以要这样做,是因为我要使用的表单是可以保存并在需要时重新编辑的表单,所以我希望默认值是以前保存/提交时设置的值 wtform字段 field_1=StringField('field_1') radio_1=RadioField('radio_1',选项=[(1,'Yes'),(2,'No')) 我想做的是这样的事情: <ul class="ff-style-radio" id="radio_1"&g

我试图在HTML模板中动态设置一个radio字段的值,但我不确定如何设置默认选择。我之所以要这样做,是因为我要使用的表单是可以保存并在需要时重新编辑的表单,所以我希望默认值是以前保存/提交时设置的值

wtform字段

field_1=StringField('field_1')
radio_1=RadioField('radio_1',选项=[(1,'Yes'),(2,'No'))
我想做的是这样的事情:

<ul class="ff-style-radio" id="radio_1">
    <li>
        {% if data.field_1 = 'X' %}
            <input id="radio_1-0" name="radio_1" type="radio" value="Yes" checked> 
        {% else %}
            <input id="radio_1-0" name="radio_1" type="radio" value="Yes"> 
        {% endif %}        
        <label for="radio_1-0">Yes</label>
   </li>
    <li>
        {% if data.field_1 = 'X' %}
            <input id="radio_1-1" name="radio_1" type="radio" value="No"> 
        {% else %}
            <input id="radio_1-1" name="radio_1" type="radio" value="No" checked> 
        {% endif %} 
        <label for="radio_1-1">No</label>
    </li>
</ul>
数据是数据库数据

{% if data.field_1 = 'X' %}
    {{ form.radio_1(id="radio_1",class="ff-style-radio",default=1) }}
{% else %}
    {{ form.radio_1(id="radio_1",class="ff-style-radio",default=2) }} 
{% endif %}
我还没有成功尝试过这种方法,将默认值替换为值,等等。像这样的事情可能吗?如果没有,我将如何将WTF与无线电字段选项分开,以便手动标记选中的选项?或者我应该使用基本HTML方法并执行以下操作:

<ul class="ff-style-radio" id="radio_1">
    <li>
        {% if data.field_1 = 'X' %}
            <input id="radio_1-0" name="radio_1" type="radio" value="Yes" checked> 
        {% else %}
            <input id="radio_1-0" name="radio_1" type="radio" value="Yes"> 
        {% endif %}        
        <label for="radio_1-0">Yes</label>
   </li>
    <li>
        {% if data.field_1 = 'X' %}
            <input id="radio_1-1" name="radio_1" type="radio" value="No"> 
        {% else %}
            <input id="radio_1-1" name="radio_1" type="radio" value="No" checked> 
        {% endif %} 
        <label for="radio_1-1">No</label>
    </li>
</ul>
  • {%if data.field_1='X%} {%else%} {%endif%} 对
  • {%if data.field_1='X%} {%else%} {%endif%} 不

感谢您的帮助

如果您想使用表单编辑数据库中已有的数据,您应该在创建表单时在视图功能中将这些数据提供给表单。这将允许您保持模板的简单性和可重用性。数据库中的数据可以作为对象或字典传递给表单。如果表单直接映射到数据库表,则只需从查询中传递未经修改的数据即可。在下面的代码中,我按照您的示例创建了一个新字典,根据
字段_1
的值设置
无线电_1
的值

@app.route("/myurl")
def myview():
    # do database lookup here
    olddata = {"radio_1": 1 if data.field_1 == "X" else 2}
    form = Myform(formdata=request.form, data=olddata)
    if request.method == "POST" and form.validate():
        # .....