Форум сайта python.su
Добрый день
имею форму
class LoginForm(FlaskForm): email = StringField('Email', validators=[Required(), Length(1, 64), Email()]) password = PasswordField('Password', validators=[Required()]) remember_me = BooleanField('Keep me logged in') submit = SubmitField('Login In')
@auth.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm() if form.validate_on_submit(): user = User.query.filter_by(email=form.email.data).first() if user is not None and user.verify_password(form.password.data): login_user(user, form.remember_me.data) return redirect(request.args.get('next') or url_for('main.index')) flash('Invalid user name or password!!') return render_template('auth/login.html', form=form)
{% 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 %} <form method="POST" action="{{ url_for('auth.login') }}"> {{ render_field(form.email) }} {{ render_field(form.password) }} {{ render_field(form.remember_me) }} <input type="submit" value="login"> </form>
if form.validate_on_submit():
Офлайн
Так узнайте, что валидатор не устраивает.
# if form.validate_on_submit(): pass else: print(form.errors)
Отредактировано 4kpt_IV (Янв. 12, 2017 17:08:36)
Офлайн
4kpt_IV
вот сделал так
@auth.route('/login', methods=['GET', 'POST']) def login(): form = LoginForm() if form.validate_on_submit(): pass else: print(form.errors) user = User.query.filter_by(email=form.email.data).first() if user is not None and user.verify_password(form.password.data): login_user(user, form.remember_me.data) return redirect(request.args.get('next') or url_for('main.index')) flash('Invalid user name or password!!') return render_template('auth/login.html', form=form)
Офлайн
Блин. Ясен пень, что стали логиниться. Валидатор-то херится…
Что-то с валидацией. Что выдает print(from.errors)?
Ну и какой смысл поля submit в классе формы, если Вы все равно используете html-ный input?
Отредактировано 4kpt_IV (Янв. 12, 2017 18:11:18)
Офлайн
4kpt_IV
да html-ышный случайно скопировал, пробовал различные варицации
а
print(from.errors)
Офлайн
HTTP/1.1” 302
return redirect("http://google.com")
Офлайн
А если form.error()?
Если не получится, то придется по-полям смотреть.
Отредактировано 4kpt_IV (Янв. 12, 2017 18:41:54)
Офлайн
<div class="page-header"> <h1>Login</h1> </div> <div class="col-md-4"> <form method="POST" class="form"> {{ form.hidden_tag() }} {{ render_field(form.email) }} {{ render_field(form.password) }} {{ render_field(form.remember_me) }} {{ render_field(form.submit) }} </form> </div> <p> New user? <a href="{{ url_for('auth.register') }}"> Click here to register </a> </p>
Офлайн
4kpt_IV
Ну и какой смысл поля submit в классе формы, если Вы все равно используете html-ный input?
Офлайн