Flask WTF给了我jinja2.exceptions.UndefinedError:' form'未定义

时间:2016-11-24 00:15:55

标签: python flask

我知道有很多情况会抛出这个错误,我在stackoverflow和其他网站上搜索非常努力,但我无法弄清楚为什么表单一直未定义。任何帮助将非常感激

我有wtf_input.py,它的所有wtf定义如下

class InputForm(Form):

# individual_first_name: DataRequired, is_name_non_digit, is_name_length, is_english
first_name = StringField("First Name", [validators.DataRequired("Please enter first name"),
                                                           I.is_name_non_digit, I.is_name_length, I.is_english])

# individual_last_name: DataRequired, is_name_non_digit, is_name_length, is_english
last_name = StringField("Last Name", [validators.DataRequired("Please enter last name"),
                                                           I.is_name_non_digit, I.is_name_length, I.is_english])

# date_of_birth:
date_of_birth = DateField('date_of_birth', [validators.DataRequired('Birth date is required')], format='%Y-%m-%d',
                          description='Date format: YYYY-MM-DD', default='2001-02-02')
   .
   .
   . a lot more 

我是我的自定义验证器类所在的类(调用静态方法)。

我的观点/ test.py(我的所有观点都在哪里)

from app.views.wtf_input import InputForm
@test_blueprint.route('/')
def index():

   return render_template('wtf_input.html')


@test_blueprint.route('/post_user', methods=['GET', 'POST'])
def post_user():

   form = InputForm()

   if form.validate():
       return render_template('wtf_input.html', form=form)

这给了我以下错误

追踪(最近一次通话) 文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py" ;,第2000行,致电 return self.wsgi_app(environ,start_response) 文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py" ;, 1991年,在wsgi_app response = self.make_response(self.handle_exception(e)) 在handle_exception中的文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py" ;,第1567行 重新加注(exc_type,exc_value,tb) File" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/_compat.py" ;,第33行,重新加入 提高价值 文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py" ;, 1988年,在wsgi_app response = self.full_dispatch_request() 文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py" ;,第1641行,在full_dispatch_request中 rv = self.handle_user_exception(e) 在handle_user_exception中的文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py",第1544行 重新加注(exc_type,exc_value,tb) File" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/_compat.py" ;,第33行,重新加入 提高价值 文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py" ;,第1639行,在full_dispatch_request中 rv = self.dispatch_request() 在dispatch_request中的文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py" ;,第1625行 return self.view_functionsrule.endpoint 文件" /Users/genomics/PycharmProjects/SA_test/app/views/post_inputs.py",第62行,索引 return render_template(' wtf_input.html') 文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/templating.py",第134行,在render_template中 context,ctx.app) 文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/templating.py" ;,第116行,在_render中 rv = template.render(context) File" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/jinja2/environment.py" ;,第989行,渲染 return self.environment.handle_exception(exc_info,True) 在handle_exception中的文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/jinja2/environment.py",第754行 重新加注(exc_type,exc_value,tb) File" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/jinja2/_compat.py" ;,第37行,重新加入 提高value.with_traceback(tb) 文件" /Users/genomics/PycharmProjects/SA_test/app/templates/wtf_input.html",第9行,在顶级模板代码中 {%for form in form.name.errors%} 文件" /Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/jinja2/environment.py" ;,第408行,在getattr中 return getattr(obj,attribute) jinja2.exceptions.UndefinedError:' form'未定义

我真的无法弄清楚发生了什么。

有人可以帮我解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:2)

您的index()正在生成此错误。当您在form操作中定义post_user并将其传递给模板时,您的index操作正在使用相同的模板wtf_input.html,但您需要不在此操作中传递任何表单定义。