2017-12-28 19 views
0

ここにはこれに関連する多くのトピックがありますが、私が直面している問題の解決に役立つものはありません。私は私のコードではどこかに関数が期待されていることを理解していますが、代わりに文字列を取得します。TypeError: 'str'は呼び出し可能ではありません(Flaskフォームのバリデーション)

関連するコード:私はこのエラーを取得していた理由について

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

ライン

country = SelectField('','Select Country', choices=countries) 

country = SelectField('Select Country', choices=countries) 

であるべきラベルは、最初の引数である必要があり、二番目の引数はバリです。あなたのコードはバリデーターとして'Select Country'を渡していますが、これは明らかに失敗します。

+0

まあ...私はそれを修正し、私は新しいエラーが発生しましたが、少なくとも修正する方法を知っています。フラスコは素晴らしいですが、エラーがどこにあるかを正確に伝えるのにうまくやっていません。私のコード@notenessを見直してくれてありがとう –

+0

@ MarkAlexaようこそ! :) – noteness

関連する問題