form.validate_on_submit () из flask_wtf FlaskForm не работает - PullRequest
0 голосов
/ 19 марта 2020

Я пытаюсь отправить форму, используя wtforms. Я не могу получить это, чтобы подтвердить. Я также пытался использовать {{ form.csrf_token }}, и он все еще не работал.

app.config['SECRET_KEY'] = 'thisisthesecretkey'
class LoginForm(FlaskForm):
    username = StringField('username', validators=[
                           InputRequired(), Length(min=4, max=15)])
    password = PasswordField('password', validators=[
                             InputRequired(), Length(min=8, max=80)])
    remember_me = BooleanField('remember me')

@app.route('/login', methods=['GET', 'POST'])
def login():
    form = forms.LoginForm()
    if form.validate_on_submit():
        return 'worked'

    return render_template('login.html', form=form)

мой jinja:

        <form class="form-signin" action="/login" method="POST">
            {{ form.hidden_tag() }}
            {{ wtf.form_field(form.username) }}
            {{ wtf.form_field(form.password) }}
            {{ wtf.form_field(form.remember_me) }}
        </form>

        <button class="btn btn-lg btn-primary btn-block" type="submit">Sign in</button>
        <p class="mt-5 mb-3 text-muted text-center">© 2020</p>

Ответы [ 2 ]

1 голос
/ 19 марта 2020

Ваш action диктует форму будет отправлять на /login. Я думаю, что вы хотите action="/register"

0 голосов
/ 20 марта 2020

У меня было и перед формой, я поместил их внутрь, а затем добавил к полям формы, это решило проблему, теперь это выглядит так:

<form class="form-signin-heading"  method="POST" action="/login">
        <div class="text-center mb-4">
            <img class="mb-4" src="/static/logo.jpg" width="72" height="72">
            <h1 class="h3 mb-3 font-weight-normal">Heading1</h1>
        </div>

        <div class="container">
            {{ form.hidden_tag() }}
            {{ wtf.quick_form(form) }}
            <button class="btn btn-lg btn-primary btn-block" type="submit">Log in</button>
        </div>
    </form>
...