【问题标题】:How to make a RadioField in Flask?如何在 Flask 中制作 RadioField?
【发布时间】:2013-01-13 12:18:58
【问题描述】:

我有一个带有 TextField、FileField 的表单,我想添加一个 RadioField。

我想要一个带有两个选项的单选字段,用户只能选择一个。我正在遵循前两种有效形式的示例。

我的 forms.py 看起来像这样

    from flask import Flask, request
    from werkzeug import secure_filename
    from flask.ext.wtf import Form, TextField, BooleanField, FileField, file_required,         RadioField
    from flask.ext.wtf import Required
    class ImageForm(Form):
        name = TextField('name', validators = [Required()])
        fileName = FileField('fileName', validators=[file_required()])
        certification = RadioField('certification', choices = ['option1', 'option2'])

在我的views.py文件中

form = myForm()
if form.validate_on_submit():
    name = form.name.data
    fileName = secure_filename(form.fileName.file.filename)
    certification = form.certification.data

在我的 .html 文件中有

     {% block content %}
     <h1>Simple Form</h1>
     <form action="" method="post" name="simple" enctype="multipart/form-data">
         {{form.hidden_tag()}}
         <p>
             Name:
             {{form.name(size=80)}}
         </p>
         <p>
             Upload a file
             {{form.fileName()}}
         </p>
         <p>
             Certification:
             {{form.certification()}}
         </p>
         <p><input type="submit" value="Submit"></p>
     </form>
     {% endblock %}

我似乎无法在网上找到某人使用单选按钮表单的示例。我在这里找到了 RadioField 的描述 http://wtforms.simplecodes.com/docs/0.6/fields.html

当我尝试访问我的表单页面时,我收到调试错误“ValueError: too many values to unpack

【问题讨论】:

    标签: python python-2.7 flask flask-wtforms


    【解决方案1】:

    在 forms.py 中,RadioField 需要看起来像这样

        RadioField('Label', choices=[('value','description'),('value_two','whatever')])
    

    其中选项为“描述”和“随便”,提交的值分别为“值”和“值_二”。

    【讨论】:

    • 我想选择默认选中的选项之一。有可能吗?
    • 默认选中一个选项 (@f.ashouri):RadioField('Label', choices=[('value','description'),('value_two','whatever')], default='value_two') - 事件发生 8 年后......希望它对某人有用
    【解决方案2】:

    form.certification() 不起作用。您需要遍历模板中的值:

    替换:

    {{ form.certification() }}
    

    与:

    {% for subfield in form.certification %}
    <tr>
        <td>{{ subfield }}</td>
        <td>{{ subfield.label }}</td>
    </tr>
    {% endfor %}
    

    【讨论】:

    • 好的,我的 .html 文件中有这个,但我仍然收到值错误。我的 forms.py 应该包含什么?我目前有certification = RadioField('certification', Choices = ['option1', 'option2'])
    猜你喜欢
    • 2019-03-10
    • 1970-01-01
    • 2016-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多