首页 > 解决方案 > jinja2.exceptions.UndefinedError: 'form' 未定义,即使在 render_template 中传递了'form'

问题描述

我制作了一个 WTForm 但无法加载它。我在一个不同的项目中制作了一个类似的表格,我只是复制了代码并相应地更改了它的细节。但现在它显示“表单”未定义错误。发生错误的代码如下:

c = [('COMPANY','COMPANY'),('DISTRIBUTOR','DISTRIBUTOR'),('OUTLET','OUTLET')]

@app.route('/') # Decorator to create url routing, '/' = Home route
def index():
    return render_template('index.html')

# User Registration
class Registration(Form):
    reg_name = StringField('Name',[validators.Length(min=5,max=20), validators.DataRequired()])
    reg_email = StringField('Email',[validators.DataRequired()])
    reg_category = SelectField(label='Category', choices=c)
    reg_password = PasswordField('Password',[validators.Length(min=5,max=15), validators.DataRequired(), validators.EqualTo('reg_confirm', message='Password do not match')])
    reg_confirm = PasswordField('Confirm Password')

@app.route('/register', methods=['GET','POST'])
def register():
    form = Registration(request.form)
    if request.method == 'POST' and form.validate():
        return render_template('index.html')
    return render_template('index.html',form=form)

这是我的app.py脚本

<span class="col-md-6 float-right">
        {% from 'includes/_formhelpers.html' import render_field %}
        <form method="POST" action="">
            <div class="form-group">{{render_field(form.reg_name, class_="form-control")}}</div>
            <div class="form-group">{{render_field(form.reg_email, class_="form-control")}}</div>
            <div class="form-group">{{render_field(form.reg_category, class_="form-control")}}</div>
            <div class="form-group">{{render_field(form.reg_password, class_="form-control")}}</div>
            <div class="form-group">{{render_field(form.reg_confirm, class_="form-control")}}</div>
            <button type="submit" class="btn btn-primary">Register</button>
        </form>
    </span>

这是我试图呈现表单的index.html 。

标签: pythonflaskflask-wtforms

解决方案


index.html由视图函数index和渲染register。但是您忘记传递formview 中的实例index


推荐阅读