2016-09-07 4 views
0

나는 WTForm과 플라스크로 앱을 만들려고합니다. controller.py에서 플라스크가 WTForms 입력을받지 않습니다.

나는이 다음 forms.py에

@mod_private.route('/portfolio/', methods=['GET', 'POST']) 
@login_required 
def portfolio(): 
    print "in portfolio" # I read this 
    form = CreateCoinsForm(request.form) 
    if request.method == 'POST' and form.validate_on_submit(): 
     print form.coins.data #I cannot take this value 
     return render_template("private/portfolio.html",form=form) 
    return render_template("private/portfolio.html",form=form) 

:

class CreateCoinsForm(Form): 
    coins = IntegerField('coins', 
         [DataRequired('num required'), 
         NumberRange(min=0, max=10)]) 

및 템플릿

<form method="post" action="/private/portfolio/" accept-charset="UTF-8" role="form"> 
      <p> {{ form.coins }}</p> 
     <p><input type=submit value=Generate> 
    </form> 

내 문제, 내가 쓴대로 코드는 템플릿에 삽입 된 문자열을 검색 할 수 없다는 것입니다.

답변

2

문제는 사용자가 양식에 내장 된 CSRF 보호 기능을 사용하고 있으며 CSRF 토큰을 포함하지 않았기 때문에 양식이 실제로 유효성을 확인하지 못했음을 나타냅니다.

것은과 같이 템플릿을 조정 해보십시오 :

<form method="post" action="/private/portfolio/" accept-charset="UTF-8" role="form"> 
    {{ form.hidden_tag() }} 
      <p> {{ form.coins }}</p> 
     <p><input type=submit value=Generate> 
    </form>