我在这里发现了许多与此相关的主题,但是它们都没有帮助解决我面临的问题。我明白在我的代码中,某个地方是一个预期的函数,但它会改为字符串。
相关代码:
class UserRegistrationForm(Form):
photo = FileField('', validators=[DataRequired()])
country = SelectField('','Select Country', choices=countries)
first_name = StringField('',[validators.Length(min=1,max=20), DataRequired()])
middle_name = StringField('',[validators.Length(min=1,max=20), DataRequired()])
last_name = StringField('',[validators.Length(min=1,max=20), DataRequired()])
dob = DateField('',format='YYYY-MM-DD', validators=[DataRequired()])
address = TextAreaField('', validators=[DataRequired()])
email = EmailField('', validators=[DataRequired(), Email()])
mobile_number = StringField('', validators=[DataRequired()])
password = PasswordField('', validators=[DataRequired()])
@app.route('/signup', methods=['GET', 'POST'])
def signup():
form = UserRegistrationForm(request.form)
if request.method == 'POST' and form.validate(): # here's where the error is coming from
file_name = request.files.getlist('photo')
if file_name[-4:] not in ALLOWED_EXTENSIONS:
flash('Invalid Image Type.')
else:
file_name = file_name.filename
destination = '/'.join([TARGET, file_name])
file_name.save(destination)
country = form.country.data
first_name = form.first_name.data
middle_name = form.middle_name.data
last_name = form.last_name.data
dob = form.dob.data
address = form.address.data
email = form.email.data
mobile_number = form.mobile_number.data
password = sha256_crypt.encrypt(str(form.password.data)) # according to tutorial the string conversion here is correct.
有关为什么我收到此错误的任何想法?已经坚持了几个小时。
答案 0 :(得分:0)
该行
country = SelectField('','Select Country', choices=countries)
应该是
country = SelectField('Select Country', choices=countries)
Label应该是第一个参数,第二个参数是验证器。您的代码正在传递'Select Country'
作为验证程序,这显然会失败。