Python 在Flask中创建web表单时,I';我得到错误:jinja2.exceptions.UndefinedError:';复习表格&x27;是未定义的

Python 在Flask中创建web表单时,I';我得到错误:jinja2.exceptions.UndefinedError:';复习表格&x27;是未定义的,python,html,flask,jinja2,wtforms,Python,Html,Flask,Jinja2,Wtforms,以下是烧瓶代码: 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

以下是烧瓶代码:

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的表单模板:

<!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>

您正在使用
form=reviewform
调用
render\u template
,这意味着
reviewform
将在模板中以
form
的名称进行访问。要解决此问题,您可以执行以下操作之一:

  • 将调用更改为
    render\u template

    return render_template("review.html", reviewform=reviewform)
    
  • 或者修改模板以使用
    表单
    而不是
    查看表单

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

谢谢@Bovarysme。这是基本论点。先生,我为自己感到羞耻
<form method="POST" action="{{ url_for('index') }}">
    {{ form.csrf_token }}
    {{ form.reviewText }}
</form>