Почему не работают валидаторы?
Я хочу чтобы во время логина если я ввел слишком короткий пароль - у меня высвечивалось сообщение о том что пароль должен быть определенной длины. Как я понимаю это легко делается при помощи wtforms.validators однако, несмотря на то что валидатор работает - сообщение не высвечивается. На примере формы для логина:
#forms.py
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, SubmitField
from wtforms.fields.html5 import DateField
from wtforms.validators import DataRequired, Email, EqualTo, Length
class LoginForm(FlaskForm):
email = StringField('Email (phone for mobile account)',validators=[DataRequired(),Email()])
password = PasswordField('Password',validators=[DataRequired(), Length(min=8, max=20, message='Must be more than 8 chars')])
submit = SubmitField('Sign In!')
далее в login.html
#login.html
{% extends "base.html" %}
{% block content %}
<h1>Sign in</h1>
<form method="POST">
{{form.hidden_tag()}}
{{form.email.label}} <br> {{form.email()}} <br>
{{form.password.label}} <br> {{form.password()}} <br>
<br>
{{form.submit(class="btn btn-warning")}}
</form>
{% endblock %}
Ответы (1 шт):
Автор решения: Dmitrii Trubetskoy
→ Ссылка
Спасибо andreymal, необходимо было в директории templates создать файл _formhelpers.html в котором было бы:
{% macro render_field(field) %}
<dt>{{ field.label }}
<dd>{{ field(**kwargs)|safe }}
{% if field.errors %}
<ul class=errors>
{% for error in field.errors %}
<li>{{ error }}</li>
{% endfor %}
</ul>
{% endif %}
</dd>
{% endmacro %}
Далее изменить неработающее на
{% from "_formhelpers.html" import render_field %}
<form method=post>
{{form.hidden_tag()}}
<dl>
{{form.email.label}} <br>
{{render_field(form.email)}} <br>
{{form.password.label}} <br>
{{render_field(form.password)}} <br>
<br>
{{form.submit(class="btn btn-warning")}}
</dl>
<p><input type=submit value=Register>
</form>
сообщения работают