Колба возвращается Нет, возможна проблема с request.form - PullRequest
0 голосов
/ 03 ноября 2019

Я пытаюсь создать веб-приложение для составления бюджета, в основном для практики, но я также хотел бы, чтобы это стало моим основным инструментом бюджетирования. Я не очень хорош в Python, но хочу быть.

У меня трудные времена, поэтому я обращаюсь к вам, ребята.

Вот мой коддля budget.py:

from flask import Flask, render_template, request
app = Flask(__name__)


@app.route('/', methods=['POST', 'GET'])
def entry():
    return render_template('entry.html',
                           the_title='Smith Family Budgeting')

@app.route('/income', methods=['POST', 'GET'])
def income():
    return render_template('income.html')

@app.route('/housing', methods=['POST', 'GET'])
def results():
    if request.method == 'POST':
        income = request.form["income"]
        return render_template('housing.html', the_income = income)

@app.route('/transportation', methods=['POST', 'GET'])
def transport():
    if request.method == 'POST':
        income = request.form["income"]
        mortgage = request.form['housing']
        leftover = int(income) - int(mortgage)
        return render_template('trans.html', leftover=leftover)


app.run(debug = True)

html для housing.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Allocating for housing</title>
</head>
<body>
<p>You have ${{  the_income  }} left to spend!</p>
<form action="/transportation">
    <p>How much is the mortgage this month?</p>
    <input name="housing" type="TEXT">
    <p>Next up: Transportation</p>
    <input type="SUBMIT" value="Next">
</form>
<form action="/income">
    <input type="SUBMIT" value="Back">
</form>
</body>
</html>

Как вы, вероятно, видите из просмотра, пользователь перемещается по приложению, вводя данные для каждой категории. Я хотел бы сохранить текущий счет оставшегося бюджета, но я изо всех сил пытаюсь пройти первую часть.

Когда колба вызывает страницу / transportation, я получаю "Ошибка типа: функция просмотра не вернуласьправильный ответ. Функция либо вернула None, либо завершилась без оператора return. "

Я не уверен, почему это так, хотя я подозреваю, что это связано с переменной" Остаток ". Я подозреваю, что вычитание значений двух разных данных формы не является правильным способом решения этой проблемы, но я не уверен, что именно. Любой совет приветствуется!

Я могу опубликовать шаблоны, хотя я не уверен, что они необходимы для решения этого. Большое спасибо, ребята, я очень рад, что этот ресурс существует.

1 Ответ

0 голосов
/ 03 ноября 2019

Используйте session для передачи данных на следующий маршрут и очистки сеанса, когда пользователь возвращается на страницу дохода

Используйте url_for для формы action

В budget.py

from flask import Flask, render_template, request, session
app = Flask(__name__)
app.secret_key = "super_secret_key"

@app.route('/', methods=['GET'])
def entry():
        return render_template('entry.html',
                           the_title='Smith Family Budgeting')

@app.route('/income', methods=['GET'])
def income():
        session['income'] = ''
        return render_template('income.html')

@app.route('/housing', methods=['POST'])
def results():
        if request.method == 'POST':
                session['income'] = request.form["income"]
                return render_template('housing.html', the_income=session['income'])

@app.route('/transportation', methods=['POST'])
def transport():
        if request.method == 'POST':
                income = session["income"]
                mortgage = request.form['housing']
                leftover = int(income) - int(mortgage)
                return render_template('trans.html', leftover=leftover)

app.run(debug = True)

В housing.html форма редактирования action и method

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Allocating for housing</title>
</head>
<body>
<p>You have ${{  the_income  }} left to spend!</p>
<form action="{{ url_for('transport') }}" method="POST">
    <p>How much is the mortgage this month?</p>
    <input name="housing" type="TEXT">
    <p>Next up: Transportation</p>
    <input type="SUBMIT" value="Next">
</form>
<form action="{{ url_for('income') }}">
    <input type="SUBMIT" value="Back">
</form>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...