如何在Flask中制作RadioField?

时间:2013-01-29 20:01:34

标签: python python-2.7 flask flask-wtforms

我有一个带有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

当我尝试访问我的表单页面时,我收到DEBUG错误“ ValueError:解压缩的值太多

2 个答案:

答案 0 :(得分:21)

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

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

选项是'description'和'whatever',提交的值分别为'value'和'value_two'。

答案 1 :(得分:3)

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

替换:

{{ form.certification() }}

使用:

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