2017-12-28 22 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