【发布时间】:2017-07-19 19:17:46
【问题描述】:
我正在创建一个包含电子邮件、地址、州、邮政编码和国家/地区的烧瓶表单。只有电子邮件是必填字段。其他都不是。但是,Flask WTForms 会强制用户从下拉列表中选择州和国家/地区。
州和国家都是下拉选项。
class UserForm(FlaskForm):
email = EmailField('E-Mail', validators=[InputRequired()])
address1 = StringField('Address line 1', render_kw={"placeholder": "Address line 1"})
address2 = StringField('Address line 2', render_kw={"placeholder": "Address line 2"})
city = StringField('City', render_kw={"placeholder": "City"})
state = SelectField('State', [validators.Optional()], default=None, choices=statesList(), render_kw={"placeholder": "State"})
postal_code = StringField('Postal Code', render_kw={"placeholder": "Postal Code"})
country = SelectField('Country', default=None, choices=countriesList(), coerce=str, render_kw={"placeholder": "Country"})
@app.route('/create_user', methods=['GET', 'POST'])
def createUser():
form=UserForm()
if form.validate_on_submit():
return render_template('confirm_user.html', email=form.email.data,
address1=form.address1.data,
address2=form.address2.data,
city=form.city.data,
state=form.state.data,
postal_code=form.postal_code.data,
country=form.country.data)
我什至将状态设置为可选字段。这只发生在下拉字段中。
我已经查看了 StackOverflow 上的一些帖子,但他们没有回答这个问题。这些帖子建议删除这些选择。我需要显示州和国家/地区下拉菜单,但如果用户不想,则无需进行选择。在这种情况下,我只会向数据库返回一个空值。
有人可以告诉我如何实现这一目标吗?
【问题讨论】:
-
根据定义,选择字段需要选择某些内容,因此请在 UI 中添加一个表示非选择项的选项。例如
[('Choose a State', 'XX'), ('Arizona', 'AZ')然后默认选择 Pick an Option 选项。
标签: python flask flask-wtforms