在Flask中创建web表单时,我得到了一个错误:jinja2。异常。未定义错误:“reviewform”未定义

2024-05-06 02:43:28 发布

您现在位置:Python中文网/ 问答频道 /正文

这是烧瓶代码:

from flask import Flask, render_template
from wtforms import Form, TextAreaField

app = Flask(__name__)
app.config['SECRET_KEY'] = 'mysecretkey'

class ReviewForm(Form):
    reviewText = TextAreaField()

@app.route('/', methods=['GET', 'POST'])
def index():
    reviewform = ReviewForm()
    return render_template("review.html", form=reviewform)

if __name__ == '__main__':
    app.run(debug=True)

下面是使用Jinja2的表单模板:

^{pr2}$

该对象似乎已正确定义并在render_template()上传递。我不明白为什么会出错。在

回溯如下:

Traceback (most recent call last):

  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\flask\app.py", line 1994, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\flask\app.py", line 1985, in wsgi_app
    response = self.handle_exception(e)
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\flask\app.py", line 1540, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\flask\_compat.py", line 33, in reraise
    raise value
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\flask\app.py", line 1982, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\flask\app.py", line 1614, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\flask\app.py", line 1517, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\flask\_compat.py", line 33, in reraise
    raise value
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\flask\app.py", line 1612, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\flask\app.py", line 1598, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\Jimmy Valentine\PycharmProjects\SentimentAnalysis\SentimentAnalysis.py", line 16, in index
    return render_template("review.html", form=reviewform)
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\flask\templating.py", line 134, in render_template
    context, ctx.app)
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\flask\templating.py", line 116, in _render
    rv = template.render(context)
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\jinja2\asyncsupport.py", line 76, in render
    return original_render(self, *args, **kwargs)
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\jinja2\environment.py", line 1008, in render
    return self.environment.handle_exception(exc_info, True)
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\jinja2\environment.py", line 780, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\jinja2\_compat.py", line 37, in reraise
    raise value.with_traceback(tb)
  File "C:\Users\Jimmy Valentine\PycharmProjects\SentimentAnalysis\templates\review.html", line 10, in top-level template code
    {{ reviewform.reviewText }}
  File "C:\Users\Default\AppData\Local\Continuum\Anaconda3\lib\site-packages\jinja2\environment.py", line 430, in getattr
    return getattr(obj, attribute)

jinja2.exceptions.UndefinedError: 'reviewform' is undefined

Tags: inpyappdefaultflasklibpackageslocal
1条回答
网友
1楼 · 发布于 2024-05-06 02:43:28

您使用form=reviewform调用render_template,这意味着{}将可以在模板中以名称form访问。要解决此问题,您可以或者

  • 将调用改为render_template

    return render_template("review.html", reviewform=reviewform)
    
  • 或者修改模板以使用form而不是reviewform。在

    <form method="POST" action="{{ url_for('index') }}">
        {{ form.csrf_token }}
        {{ form.reviewText }}
    </form>
    

相关问题 更多 >