0

I'm tring to create an app with flask with WTForms.

In the controller.py i have:

@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)

in the forms.py:

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

and the template

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

my problem, as i wrote in the code is that I cannot retrieve the string inserted in the template.

1 Answer 1

2

Your problem suggests that you are using the built-in CSRF protection on your form, and your form actually isn't validating because you haven't included the CSRF token.

Try adjusting your template like so:

<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>
Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.