Я использую Flask-WTF для отправки формы, но у меня возникают некоторые трудности, и я не могу найти какую-либо помощь или другие примеры. Мой код ниже, но вот что я нашел до сих пор. form.validate_on_submit() не оценивает true, поэтому он пропускает весь этот блок. Затем я попытался посмотреть, что происходит с запросом, который читает python. Когда я распечатал значение (после инициализации LoginForm) в файле «form.username.data», он напечатал «None», поэтому кажется, что форма не создается правильно?Форма Flask-WTF не получает данные
Я проверил сообщение, которое отправляет браузер, и вся необходимая информация видна в этом запросе!
Вот моя форма Войти код:
from flask.ext.wtf import Form
from wtforms import TextField, PasswordField
from wtforms.validators import Required
class LoginForm(Form):
username = TextField('username', validators = [Required()])
pin = PasswordField('pin', validators = [Required()])
Вот маршрут логика:
@app.route('/login', methods = ['GET', 'POST'])
def login():
if g.user is not None and g.user.is_authenticated():
return redirect(url_for('index'))
form = LoginForm(request.form)
print form.errors
if form.validate_on_submit():
if form.username is None or form.username == "":
print "invalid user"
flash('Invalid login. Please try again.')
return redirect(url_for('login'))
user = db.session.query(User).filter_by(username=form.username).filter_by(password=form.pin).first()
print user
if user is None:
flash('User does not exist. Please register.')
return redirect(url_for('welcome'))
login_user(user)
return redirect(url_for('dashboard'))
print "didn't validate"
return render_template('login.html', title = 'Sign In', form = form)
конфигурационный код:
CSRF_ENABLED = True
А вот форма HTML:
{% extends 'base.html' %}
{% block content %}
<h1>Sign In</h1>
<form action="" method="post" name="login">
{{ form.hidden_tag()}}
<p>
Please enter your username:<br>
{{ form.username }}<br>
</p>
<p>
Please enter your pin:<br>
{{ form.pin }}<br>
</p>
<p><input type="submit" value="Sign In"></p>
</form>
{% endblock %}
Я смотрел на это целыми днями, но я не понимаю, что делать дальше. Любые указатели или что-то очевидное мне не хватает?
Вы посмотрели на 'form.errors' после вызова' validate_on_submit'? – dirn
Я распечатал form.errors, но ничего не появилось: \ – phouse512
В вашем примере вы распечатываете * до *, вы фактически проверяете форму. У него не будет никаких ошибок, пока вы не попытаетесь его проверить. – dirn