从request.form.get()获取无

时间:2019-04-28 17:49:54

标签: python html flask

我需要从2种不同的形式获取数据。第一个“ index.html”呈现采用用户选择的选项,并将其存储在变量“ item”上。

在“ page2.html”上,此处显示“ item”值就可以了。再次,用户在文本框输入中输入一些新数据,然后将其重定向到下一个呈现“ page3.html”

在“ page3.html”上,应该显示“ index.html”和“ page2.html”上的表单中的数据,但是当我尝试显示“ item”值时却显示“ None” 。为什么?

我尝试在单独的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 个答案:

答案 0 :(得分:1)

将项目的值存储在会话中,以便以后可以访问它。完成后,您可以清除会话,例如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)