首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Flask中创建web表单时,我收到错误: jinja2.exceptions.UndefinedError:'reviewform‘is undefined

在Flask中创建web表单时,我收到错误: jinja2.exceptions.UndefinedError:'reviewform‘is undefined
EN

Stack Overflow用户
提问于 2017-07-05 02:40:06
回答 1查看 573关注 0票数 0

下面是Flask代码:

代码语言:javascript
复制
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的表单模板:

代码语言:javascript
复制
<!doctype html>
<html>
<head>
    <title>Review Page</title>
</head>
<body>
    <h1>Enter your review</h1>
    <form method="POST" action="{{ url_for('index') }}">
        {{ reviewform.csrf_token }}
        {{ reviewform.reviewText }}
    </form>
</body>
</html>

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

下面是回溯:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-05 03:56:51

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

  • 将调用改为render_template

reviewform=reviewform)

  • or修改您的模板以使用reviewform.

代替render_template("review.html",return render_template

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44912372

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档