2016-11-30 5 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

이 그래서 request.form가 비어, GET 요청입니다. 무조건 validate으로 전화를 걸므로 빈 데이터에 대해 유효성을 검사하는 것입니다. 따라서 모든 것이 유효하지 않습니다. 이것이 validate_on_submit이 존재하는 이유입니다. 폼 데이터가 없으므로 get 요청에 대해 유효성을 검사하지 않습니다.

if form.validate() 블록을 제거하십시오.

form.errors은 유효성 검사 후에 만 ​​채워 지므로 validate_on_submit 블록 아래로 옮기면 항상 비어있게됩니다.


또한, 당신은 양식이 제출되면 플라스크-WTF가 자동으로 전달합니다, request.form을 통과 할 필요가 없습니다.