首页 文章

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

提问于
浏览
0

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

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

class InputForm(Form):

# Patient ********************************

# individual_first_name: DataRequired, is_name_non_digit, is_name_length, is_english
individual_first_name = StringField("Patient 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
individual_last_name = StringField("Patient 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='1986-05-06')
   .
   .
   . a lot more

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

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

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

   return render_template('wtf_input.html')


@post_user_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行,在 call 中返回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))文件"/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py",第1567行,在handle_exception中重新加载(exc_type,exc_value,tb)文件"/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)文件"/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py",第1544行,在handle_user_exception中重新加载(exc_type,exc_value,tb)文件"/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()文件"/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/app.py",第1625行,在dispatch_request返回self.view_functionsrule.endpoint文件"/Users/genomics/PycharmProjects/SA_test/app/views/post_inputs.py",第62行,索引返回render_template('wtf_input.html')文件"/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/templating.py",第134行,在render_template上下文中,ctx.app)文件"/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/flask/templating.py",第116行,在_render中rv = te mplate.render(context)文件"/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/jinja2/environment.py",第989行,在渲染中返回self.environment.handle_exception(exc_info,True)文件"/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/jinja2/environment.py",第754行,在handle_exception中重新加载(exc_type,exc_value,tb)文件"/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 message in form.name.errors%}文件"/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages/jinja2/environment.py",第408行,在getattr中返回getattr(obj,attribute)jinja2.exceptions.UndefinedError :'form'未定义

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

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

谢谢

1 回答

  • 1

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

相关问题