Возникли проблемы при преобразовании формы IntegerField в целочисленную переменную, чтобы использовать ее при вычислении даты - PullRequest
0 голосов
/ 26 апреля 2020

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()

Идея всего приложения заключается в следующем: У вас есть форма, введите ГОД МЕСЯЦ И ДЕНЬ в поле IntegerField, используемом с WTFORMS, и когда вы нажмете ОТПРАВИТЬ на этой странице, вы будете перенаправлены на страницу, где отображается ваш результат. Это звучит просто, пока я не понял, что понятия не имею, как преобразовать данные IntegerField в целочисленную переменную, которую я могу вычислить и передать через мой HTML файл ....

1 Ответ

0 голосов
/ 26 апреля 2020

Как вы указали, вам не нужны сами поля формы, вы хотите, чтобы данные отправлялись вместе с запросом на публикацию.

На странице "/ calculator", когда вы нажимаете кнопку отправить, сообщение Запрос отправляется на ваш сервер, с данными, содержащими значения каждого поля в вашей форме. Теперь я не уверен, как это работает в Flask, но вы хотите найти:

  • На какой маршрут на вашем сервере был отправлен этот запрос? (в данном случае, вероятно, «/ calculator», который, кажется, является единственным маршрутом, принимающим запросы POST)
  • В рамках этого маршрута, как вы можете получить доступ к отправленному запросу и данным, отправленным с ним?

Я бы порекомендовал вам иметь четкое представление о том, как эти HTTP-запросы работают в первую очередь (в основном, GET и POST) и как и где они отправляются / принимаются в вашем приложении.

...