Я использую Flask-WTF для отправки данных в форму, но я не могу получить никаких данных при отправке формы.Это мой класс LoginForm:
class LoginForm(FlaskForm):
username=StringField('Username')
password=PasswordField('Password')
def validate(self):
check_validate = super(LoginForm, self).validate()
if not check_validate:
return False
logging.error('username is %s'%(self.username)
user=User.query.filter_by(username=self.username.data).first()
if not user:
logging.error('username %s: Invalid username or password'%self.username.data)
self.username.errors.append(
'Invalid username or password'
)
return False
if not user.checkPassword(self.password.data):
logging.error('password %s:Invalid username or password'%self.password.data)
self.username.errors.append(
'Invalid username or password'
)
return False
return True
А вот моя форма:
{% extends 'base.html' %}
{% from 'base.html' import input %}
{% block title %}Login{% endblock %}
{% block body %}
<form method='POST' action="{{ url_for('main.login')}}">
{{ form.hidden_tag() }}
{{ input(form.username, 'Username') }}
{{ input(form.password, 'Password') }}
<input class='btn-primary' type='submit' value='Login'>
</form>
{% endblock %}
входной файл представляет собой макрос jinaja, содержащий
{% macro input(name, label, value='', type='text') %}
<div class="form-group">
<label for='{{ name }}'>{{ label }}</label>
<input type='{{ type }}' name='{{ name }}' value='{{ value | escape }}' class='form-control'>
</div>
{% endmacro %}
, поэтому, когда явведите некоторые данные в этой форме и отправьте, я всегда видел
ОШИБКА: root: username is
Похоже, что данные не были переданы в LoginForm
Что мне делать?
@main_blueprint.route('/login', methods=('GET','POST'))
def login():
form = LoginForm()
if form.validate_on_submit():
flash("Your have been logged in.", category="success")
user = User.query.filter_by(username=form.username.data).first()
return render_template(
'user.html',
user=user
)
return render_template('login.html', form = form)
main_blueprint = Blueprint(
'main',
__name__,
template_folder='../templates/main'
)
new: я пытался отправить свою форму методом 'GET' и обнаружил, что мое имя пользователя и пароль были переданы, но я все еще не могу получить их в LoginForm
127.0.0.1 - - [02/Dec/2018 01:05:18] "GET /login?csrf_token=...input+
id%3D%22username%22+
name%3D%22username%22+
type%3D%22text%22+
value%3D%22%22%3E=mer&%3C
input+
id%3D%22password%22+
name%3D%22password%22+
type%3D%22password%22+
value%3D%22%22%3E=dly1234&
submit=Login+In HTTP/1.1" 200 -
'mer' и 'dly1234' - это введенные мной имя пользователя и pwd.