Получение None от request.form.get () - PullRequest
0 голосов
/ 28 апреля 2019

Мне нужно получить данные из 2 разных форм. Первый рендер "index.html" берет выбранную пользователем опцию и сохраняет ее в переменной "item".

на "page2.html", значение "item" здесь показано просто отлично. И снова, пользователь вводит некоторые новые данные в поле ввода текста, а затем перенаправляется на следующий рендеринг, «page3.html»

на "page3.html", предполагается, что оба данные из форм на "index.html" и "page2.html" должны отображаться, но я получаю "None", когда пытаюсь показать значение "item" , Зачем?

Я пытался сделать это на отдельных маршрутах app.route (), но я также получил значение типа None.

файл app.py:

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route("/", methods=['GET', 'POST'])
def index():
    if request.method == 'POST':

            if request.form.get('send') == 'send':
                item = str(request.form.get('test1'))
                return render_template('page2.html', item=item)

            if request.form.get('send2') == 'send2':
                item = str(request.form.get('test1'))
                text = request.form.get('textbox')
                return render_template('page3.html', item=item, text=text)
    else:
        return render_template('index.html')
app.run(debug=True)

файл index.html:

<div align="center">
    <form method="POST" action="{{ url_for('index') }}">
        <select name="test1">
            <option name="1" value="1">1</option>
            <option name="2" value="2">2</option>
            <option name="3" value="3">3</option>
        </select>
        <button type="submit" name="send" value="send">Send</button>
    </form>
</div>

файл page2.html:

<div align="center">
    <form method="POST" action="{{ url_for('index') }}">
        <h2>Previous selection: {{ item }}</h2><br>
        <input type="text" name="textbox" value="Enter text">
        <button type="submit" name="send2" value="send2">Send</button>
    </form>
</div>

и файл page3.html:

<div align="center">
    <h2>Your result is:</h2><br>
    <h2>"{{ text }}" and "{{ item }}" </h2>
</div>

1 Ответ

1 голос
/ 28 апреля 2019

сохранить значение элемента в сеансе, чтобы вы могли получить к нему доступ позже.Как только вы закончите, вы можете очистить сеанс, как session.pop("session_name", None)

if request.form.get('send') == 'send':
    item = str(request.form.get('test1'))
    session["test1"]=item
    return render_template('page2.html', item=item)
if request.form.get('send2') == 'send2':
    item = session.get("test1")
    text = request.form.get('textbox')
    return render_template('page3.html', item=item, text=text)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...