【问题标题】:Flask WTF giving me jinja2.exceptions.UndefinedError: 'form' is undefinedFlask WTF 给我 jinja2.exceptions.UndefinedError: 'form' is undefined
【发布时间】:2016-11-24 00:15:55
【问题描述】:

我知道有很多情况会引发此错误,我在 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 

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

my view/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)

这给了我以下错误

Traceback (most recent call last)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 2000, in __call__
return self.wsgi_app(environ, start_response)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1991, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1567, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1988, in wsgi_app
response = self.full_dispatch_request()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1641, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1544, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/_compat.py", line 33, in reraise
raise value
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1639, in full_dispatch_request
rv = self.dispatch_request()
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py", line 1625, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/Users/genomics/PycharmProjects/SA_test/app/views/post_inputs.py", line 62, in index
return render_template('wtf_input.html')
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/templating.py", line 134, in render_template
context, ctx.app)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/templating.py", line 116, in _render
rv = template.render(context)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/jinja2/environment.py", line 989, in render
return self.environment.handle_exception(exc_info, True)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/jinja2/environment.py", line 754, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/jinja2/_compat.py", line 37, in reraise
raise value.with_traceback(tb)
File "/Users/genomics/PycharmProjects/SA_test/app/templates/wtf_input.html", line 9, in top-level template code
{% for message in form.name.errors %}
File "/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/jinja2/environment.py", line 408, in getattr
return getattr(obj, attribute)
jinja2.exceptions.UndefinedError: 'form' is undefined

我真的不知道发生了什么。

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

谢谢

【问题讨论】:

    标签: python flask


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-30
      • 2021-10-03
      • 1970-01-01
      • 2017-12-08
      • 1970-01-01
      • 2020-08-11
      • 1970-01-01
      相关资源
      最近更新 更多