【发布时间】:2020-10-20 15:11:55
【问题描述】:
我用 Flask 构建了这个简单的网页。
我没有使用表单等 HTML 小部件,而是使用了 Flask WTForm 库,它允许您从 Python 代码编写表单小部件。这是我的 Python 代码:
from flask import Flask, render_template
from wtforms import Form,StringField, SubmitField
from flask.views import View, MethodView
app = Flask(__name__)
class SquareForm(Form):
side = StringField('Side of the square')
button = SubmitField("Calculate")
class HomePage(MethodView):
def get(self):
return render_template('index2.html', square_form=square_form)
def post(self):
square_area = square_form.side.data * 2
return render_template('index2.html', square_form=square_form, result = square_area)
# Create a view function for HomePage class
home_page = HomePage.as_view('home_page')
app.add_url_rule('/', view_func=home_page)
app.add_url_rule('/result', view_func=home_page, methods=['POST'])
square_form = SquareForm()
if __name__ == "__main__":
app.run(debug=True)
这是我的 index.html 代码:
<form method="POST" action="/result">
{{ square_form.side.label }}: {{ square_form.side() }}
{{square_form.button()}}
{{result}}
</form>
我运行代码并在HTML输入框中输入5,但出现错误:
File "/Users/folder/main.py", line 18, in post
square_area = square_form.side.data * 2
TypeError: unsupported operand type(s) for *: 'NoneType' and 'int'
很明显,TypeError 发生是因为square_form.side.data 是None。我希望 square_form.side.data 改为 '5'。我怎样才能做到这一点?
【问题讨论】: