Я просмотрел другие подобные проблемы здесь и в нескольких других местах, но решения, похоже, не помогают с моей проблемой. Несмотря на это, я не вижу большой разницы между этим простым кодом, который у меня есть, и другим подобным кодом. Особенно этот Flask - wtforms: проверка всегда ложна
form.validate_on_submit() всегда ложно, и я не понимаю, почему. Я просматриваю книгу Мигеля Гринберга по веб-разработке Flask, но я хотел изменить некоторые вещи, чтобы узнать больше. Это работает при использовании wtf.quick_form(form) в шаблоне html, но если я удалю запись quickform и вставлю поля формы, то это не сработает. Экран просто обновляется, и он не меняет Stranger на любое имя. вошел
Шаблон HTML-индекса
{% extends "base.html" %}
{% import "bootstrap/wtf.html" as wtf %}
{% block title %}Flasky{% endblock %}
{% block page_content %}
<div class="page-header">
<h1>Hello, {% if name %}{{ name }}{% else %}Stranger{% endif %}!</h1>
</div>
<form action="" method='POST'>
{{ form.name.label }} <br>
{{ form.name }}
{{ form.submit }}
</form>
{% endblock %}
соответствующий код hello.py
from flask import Flask, render_template, request
from flask.ext.script import Manager
from flask.ext.bootstrap import Bootstrap
from flask.ext.moment import Moment
from flask.ext.wtf import Form
from wtforms import StringField, SubmitField, RadioField, TextField, validators
from wtforms.validators import Required
from wtforms.validators import DataRequired
app = Flask(__name__)
class NameForm(Form):
name = StringField('What is your name?',validators=[Required()] )
submit = SubmitField('Submit')
@app.route('/', methods=['GET', 'POST'])
def index():
name = None
form = NameForm(request.form) #From the docs I read I don't need
# request.form but it
# doesn't work either with it or without it
if form.validate() == True:
name='True' #never happens is not validating or is always set to False for
# some reason
if form.validate_on_submit(): #isn't validating or working
name = form.name.data #'Stranger' will disappear from the html template and
#replaced with the name the user entered in the
# Stringfield
form.name.data = '' #clear stringfield for next round
return render_template('index.html',form=form, name=name)
if __name__ == '__main__':
app.run(host='0.0.0.0', port=80, debug=True)'
что я не понимаю\не понимаю? Спасибо
g