如何使用Flask在HTML页面之间传递变量

3

我是一个新手,正在尝试使用Flask在两个网页之间传递变量。第一个网页是一个简单的表单页面,用于接收一个数字;而第二个网页则只是显示所输入的内容。

表单页面的HTML代码如下:

<!doctype html>
<html>
<body>
    <form action ="{{ url_for('return_form', glon="glon") }}" method="post">
            Galactic Longitude: <input type="text" name="glon">
        <button type="submit">Submit</button>
    </form>
</body>
</html> 

用于显示页面的HTML代码:

<!doctype html>
<body>

<p> {{ glon }} </p>

</body>
</html>

Flask脚本目前看起来是这样的:
from flask import Flask
from flask import render_template, url_for, request, redirect
app = Flask(__name__)

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/form/', methods = ['GET', 'POST'])
def form():
    if request.method == 'POST':
        glon = request.form['glon']
        #glat = request.form['glat']

        return redirect(url_for('return_form', glon=glon))

    return render_template('form.html')

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

if __name__ == '__main__':
    app.run()

目前,第二页仅显示“glon”,而不是传递给表单的数字。

我只想在第二页上显示变量,并最终在return_form函数中使用它。


使用HTTP方法GET或POST。 - Diego Vinícius
1个回答

7

所以我不明白你的方法。以下是我做的事情,我稍微改了一下代码。希望这样解决了你的问题。

main.py

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

@app.route('/')
def index():
    return render_template('index.html')

@app.route('/form', methods = ['GET', 'POST'])
def form():
    if request.method == 'POST':
        glon = request.form['glon']
        return render_template('display.html', glon=glon)

# @app.route('/return_form/<glon>', methods = ['GET', 'POST'])
# def return_form(glon):
#     return render_template('return_form.html', glon=glon)

if __name__ == '__main__':
    app.run()

index.html

<html>
<body>
    <form action ="{{ url_for('form') }}" method="post">
            Galactic Longitude: <input type="text" name="glon">
        <button type="submit">Submit</button>
    </form>
</body>
</html>

display.html

<!doctype html>
<body>

<p> {{ glon }} </p>

</body>
</html>

尝试过这种方法,但也无法使其正常工作,我也不确定在这个例子中form.html模板是如何渲染的。 - Sam Billington

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接