Python SelectField强制我从下拉列表中选择一个选项
我正在创建一个包含电子邮件、地址、州、邮政编码和国家的烧瓶表单。只有电子邮件是必填字段。其他人都不是。但是,表单强制用户从下拉列表中选择一个州和一个国家 州和国家都是下拉选项Python SelectField强制我从下拉列表中选择一个选项,python,flask,flask-wtforms,Python,Flask,Flask Wtforms,我正在创建一个包含电子邮件、地址、州、邮政编码和国家的烧瓶表单。只有电子邮件是必填字段。其他人都不是。但是,表单强制用户从下拉列表中选择一个州和一个国家 州和国家都是下拉选项 class UserForm(FlaskForm): email = EmailField('E-Mail', validators=[InputRequired()]) address1 = StringField('Address line 1', render_kw={"placeholder": "
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的帖子,但是他们没有回答这个问题。这些帖子建议删除这些选择。我需要州和国家的下拉列表是可见的,但用户不需要作出选择,如果他们不想。在本例中,我将只向数据库返回一个空值
有人能告诉我如何做到这一点吗?只需提供一个选项来表示非选择。例如
def states_list():
return [('XX', 'Pick a Choice'), ('AZ', 'Arizona')]
class UserForm(FlaskForm):
state = SelectField('State', choices=states_list(), default='XX')
@app.route('/create_user', methods=['GET', 'POST'])
def createUser():
form=UserForm()
if form.validate_on_submit():
if form.state.data == 'XX':
return 'No State Chosen'
return '{} Chosen'.format(form.state.data)
return render_template('form.html', form=form)
根据定义选择字段需要选择某些内容,因此在UI中添加一个表示非选择项的选项。e、 g.
[('Choose a State','XX'),('alizona','AZ')
然后默认选择Pick an选项。