2016-11-30 18 views
1

Flask-WTFフォームのFlaskビューがあります。ブラウザでページを読み込むと、フォームはまだ送信されていないのにエラーが発生します。フォームに提出される前にエラーが発生するのはなぜですか?Flask-WTFフォームにGETリクエスト中にエラーが発生しました

@app.route('/', methods=['GET', 'POST']) 
def index(): 
    form = ApplicationForm(request.form) 

    if form.is_submitted(): 
     print "Form successfully submitted" 

    if form.validate(): 
     print "valid" 

    print(form.errors) 

    if form.validate_on_submit(): 
     return redirect('index') 

    return render_template('index.html', form=form) 
127.0.0.1 - - [30/Nov/2016 16:54:12] "GET/HTTP/1.1" 200 - 
{'department': [u'Not a valid choice'], 'email': [u'This field is required.'], 'csrf_token': ['CSRF token missing'], 'name': [u'This field is required.'], 'address': [u'This field is required.']} 

答えて

1

これはGETリクエストなので、request.formは空です。あなたは無条件でvalidateと呼んでいるので、空のデータに対して妥当性を確認しています。したがって、すべてが無効です。これは、validate_on_submitが存在する理由です。フォームデータを持たないため、get要求を検証しません。

if form.validate()ブロックを削除します。

form.errorsは、検証後にのみ入力されるため、validate_on_submitブロックの下に移動するか、常に空になります。


また、フォームが提出された場合にフラスコ-WTFは自動的にそれを渡します、request.formを渡す必要はありません。

関連する問題