无法将表单 IntegerField 转换为整数变量以便在计算日期时使用它

Having trouble transforming a form IntegerField to an integer variable in order to use it at calculating date

TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是'IntegerField'这是错误

from flask import Flask, render_template
from wtforms import IntegerField, SubmitField
from flask_wtf import FlaskForm
import datetime

app = Flask(__name__)

app.config['SECRET_KEY'] = 'alex'

class Calculator(FlaskForm):
    Year = IntegerField('Year')
    Month = IntegerField('Month')
    Day = IntegerField('Day')
    submit = SubmitField('Calculate')

tdy = datetime.date.today()

@app.route("/")
@app.route("/home")
def home():
    return render_template('home.html')


@app.route("/about")
def about():
    return render_template('about.html')

@app.route("/Calculator", methods=['GET', 'POST'])
def days():
    form = Calculator()
    return render_template('calculator.html', form=form)

@app.route('/HURRAY', methods=['GET'])
def ura():
    form = Calculator()
    y = int(form.Year)
    m = int(form.Month)
    d = int(form.Day)
    till_bday = tdy - datetime.date(y, m, d)
    return render_template('HURRAY.html', till_bday = till_bday)

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

整个应用程序的想法如下:您有一个表单,在与 WTFORMS 一起使用的 IntegerField 中输入 YEAR MONTH 和 DAY,当您在该页面上单击 SUBMIT 时,您将被重定向到显示结果的页面.这听起来很简单,直到我意识到我不知道如何在一个整数变量中制作我的 IntegerField 数据,我可以计算并通过我的 HTML 文件....

正如您所指出的,您不需要表单的字段本身,您希望数据随 post 请求一起发送。

在“/calculator”页面上,当您点击提交时,一个 post 请求会发送到您的服务器,其中的数据包含您表单中每个字段的值。现在我不确定它在 Flask 中是如何工作的,但你想找到:

  • 此请求发送到您服务器中的哪个路由? (在这种情况下可能是“/calculator”,这似乎是唯一接受 POST 请求的路由)
  • 在此路由中,您如何访问发送给它的请求以及随它发送的数据?

我建议您清楚地了解这些 HTTP 请求首先是如何工作的(主要是 GET 和 POST)以及它们在您的应用程序中的方式和位置 sent/received。