无法将表单 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。
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。