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

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 文件....


达令说
浏览 71回答 1
1回答

冉冉说

正如您所指出的,您不希望表单的字段本身,您希望将数据与发布请求一起发送。在“/calculator”页面上,当您单击提交时,会向您的服务器发送一个发布请求,其中包含表单中每个字段的值的数据。现在我不确定它在 Flask 中是如何工作的,但你想找到:此请求已发送到您服务器中的哪个路由?(在这种情况下可能是“/calculator”,这似乎是唯一接受 POST 请求的路由)在此路由中,您如何访问发送给它的请求以及随它发送的数据?我建议您首先清楚地了解这些 HTTP 请求是如何工作的(主要是 GET 和 POST)以及它们在您的应用程序中的发送/接收方式和位置。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python