TypeError: 'str' is not callable (Flask form validation)
TypeError: 'str' is not callable (Flask form validation)
我在 SO 上发现了很多与此相关的主题,但是其中 none 有助于解决我面临的问题。我知道在我的代码中某处是预期的函数,但它得到的是字符串。
相关代码:
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.
关于我为什么会收到此错误的任何想法?已经坚持了几个小时。
行
country = SelectField('','Select Country', choices=countries)
应该是
country = SelectField('Select Country', choices=countries)
标签应该是第一个参数,第二个参数是验证器。您的代码将 'Select Country'
作为验证器传递,这显然会失败。
我在 SO 上发现了很多与此相关的主题,但是其中 none 有助于解决我面临的问题。我知道在我的代码中某处是预期的函数,但它得到的是字符串。
相关代码:
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.
关于我为什么会收到此错误的任何想法?已经坚持了几个小时。
行
country = SelectField('','Select Country', choices=countries)
应该是
country = SelectField('Select Country', choices=countries)
标签应该是第一个参数,第二个参数是验证器。您的代码将 'Select Country'
作为验证器传递,这显然会失败。