假设我有以下情况;
@app.route('/a', methods=['GET'])
def a():
a = numpy.ones([10,10])
...
return render_template(...) # this rendered page has a link to /b
@app.route('/b', methods=['GET'])
def b():
print a
....
在重新渲染的页面中,有一个链接将页面/a 指向/b。我尝试将变量 a 传递给 page/b 以重用它。我应该怎么做这个 Flask 应用程序?我需要使用 session 还是有其他解决方案?
最佳答案
如果您想传递一些用户不需要查看或控制的 python 值,您可以使用 session :
@app.route('/a')
def a():
session['my_var'] = 'my_value'
return redirect(url_for('b'))
@app.route('/b')
def b():
my_var = session.get('my_var', None)
return my_var
session 的行为类似于 dict 并序列化为 JSON。因此,您可以将任何 JSON 可序列化的内容放入 session 中。但是请注意,大多数浏览器不支持大于 ~4000 字节的 session cookie。
您应该避免在 session 中放置大量数据,因为每次请求都必须与客户端之间发送数据。对于大量数据,请使用数据库或其他数据存储。见 Are global variables thread safe in flask? How do I share data between requests?和 Store large data or a service connection per Flask session .
如果要在 url 中从模板传递值,可以使用查询参数:
<a href="{{ url_for('b', my_var='my_value') }}">Send my_value</a>
将产生网址:
/b?my_var=my_value
可以从 b 中读取:
@app.route('/b')
def b():
my_var = request.args.get('my_var', None)
关于python - 如何在 Flask 页面之间传递变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27611216/