简体   繁体   English

Flask中的WTForms:UndefinedError:'form'未定义

[英]WTForms in Flask: UndefinedError: 'form' is undefined

I'm new to Flask and WTForms, and I cannot render my HTML page. 我是Flask和WTForms的新手,我无法呈现HTML页面。 I've been through the WTforms documentation again and again, but I can't find the source of the error: 我已经一次又一次地浏览了WTforms文档,但是找不到错误源:

jinja2.exceptions.UndefinedError, UndefinedError: 'form' is undefined

My code is below: 我的代码如下:

forms.py 表格

from flask.ext.wtf import Form
from wtforms import TextField, BooleanField, TextAreaField, StringField, PasswordField, SelectField, validators

class LoginForm(Form):
    username = TextField('Username', [
        validators.Required(), 
        validators.Length(min=4, max=25)
    ])
    password = PasswordField('New Password', [
        validators.Required()
    ])

app.py app.py

from forms import *
from wtforms import Form, fields, BooleanField, TextField, StringField,     PasswordField, validators
from werkzeug.security import generate_password_hash, \
 check_password_hash

@app.route('/login/', methods=['GET', 'POST'])
def login():
    form = LoginForm(request.form)
    if request.method == 'POST' and form.validate():
        if load_user(form.username.data) is None:
            flash('Invalid username')
        else: 
            if check_password_hash(cred.password, form.password.data):
                return redirect(url_for('browse'))  
            else: 
                flash('Invalid password')
    return render_template('login.html', title='Login', form=form)

login.html login.html

{% extends "base.html" %}
{% block body %}
    <form action="{{ url_for('login') }}" method="Post">
        <fieldset>
            <div>{{ form.username.label }}: {{ form.username() }}</div>
            <div>{{ form.password.label }}: {{ form.password() }}</div>
            <div class="form-group">
                <button class="btn btn-default" type="submit">
                    <span aria-hidden="true" class="glyphicon glyphicon-log-in"></span>
                    Log In
                </button>
            </div>
        </fieldset>
    </form>    
    <div>
    or <a href="new">Register</a> for an account
    </div>
{% endblock %}

You still have to use the return statement - for ex: 您仍然必须使用return语句-例如:

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

in all your if-else branches because, else, the form context variable is not passed to the template. 在所有if-else分支中,因为否则, form上下文变量未传递到模板。 The login function should look like: login功能应如下所示:

@app.route('/login/', methods=['GET', 'POST'])
def login():
    form = LoginForm(request.form)
    if request.method == 'POST' and form.validate():
        if load_user(form.username.data) is None:
            flash('Invalid username')
            return render_template('login.html', title='Login', form=form)
    else: 
        if check_password_hash(cred.password, form.password.data):
            return redirect(url_for('browse'))  
        else: 
            flash('Invalid password')
            return render_template('login.html', title='Login', form=form)
    return render_template('login.html', title='Login', form=form)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 烧瓶wtforms未通过表单-UndefinedError:&#39;form&#39;未定义 - Flask wtforms not passing form - UndefinedError: 'form' is undefined UndefinedError: &#39;form&#39; 在使用 wtforms 和 flask 时未定义 - UndefinedError: 'form' is undefined when using wtforms and flask Flask WTF 给我 jinja2.exceptions.UndefinedError: &#39;form&#39; is undefined - Flask WTF giving me jinja2.exceptions.UndefinedError: 'form' is undefined 在 flask 和 python 中出现错误“jinja2.exceptions.UndefinedError: 'form' is undefined” - having the error “ jinja2.exceptions.UndefinedError: 'form' is undefined ” in flask and python jinja2.exceptions.UndefinedError: 'form' is undefined error in python, Flask - jinja2.exceptions.UndefinedError: 'form' is undefined error in python, Flask Flask jinja2.exceptions.UndefinedError: &#39;form&#39; 未定义* [已解决] - Flask jinja2.exceptions.UndefinedError: 'form' is undefined* [RESOLVED] jinja2.exceptions.UndefinedError: &#39;form&#39; 在 Flask-security 中未定义 - jinja2.exceptions.UndefinedError: 'form' is undefined in Flask-security Flask 无法导入枚举? UndefinedError:“枚举”未定义 - Flask cannot import enumerate? UndefinedError: 'enumerate' is undefined WTForms:嵌套表单字段,UndefinedError:&#39;unicode对象&#39;没有属性&#39;label&#39; - WTForms: nested form field, UndefinedError: 'unicode object' has no attribute 'label' Flask - UndefinedError: &#39;restaurant_id&#39; 未定义 - Flask - UndefinedError: 'restaurant_id' is undefined
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM