如何在Flask页面之间传递变量? [英] How to pass a variable between Flask pages?
问题描述
假设我有以下情况;
@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传递给页面/b以重用它.我该怎么做这个Flask应用程序?我需要使用会话还是有其他解决方案?
In the redered page there is one link that directs page /a to /b. I try to pass variable a to page /b to reuse it. How should I do this Flask app? Do I need to use session or is there any other solution?
推荐答案
如果要传递一些用户不需要查看或控制的python值,则可以使用会话:
If you want to pass some python value around that the user doesn't need to see or have control over, you can use the 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
会话的行为像字典,并序列化为JSON.因此,您可以将可序列化JSON的任何内容放入会话中.但是请注意,大多数浏览器不支持大于4000字节的会话Cookie.
The session behaves like a dict and serializes to JSON. So you can put anything that's JSON serializable in the session. However, note that most browsers don't support a session cookie larger than ~4000 bytes.
您应该避免在会话中放入大量数据,因为必须在每次请求时将数据发送到客户端或从客户端发送.对于大量数据,请使用数据库或其他数据存储.参见是全局变量在烧瓶中螺纹安全吗?如何在请求之间共享数据?和在Flask会话中存储大数据或服务连接.
You should avoid putting large amounts of data in the session, since it has to be sent to and from the client every request. For large amounts of data, use a database or other data storage. See Are global variables thread safe in flask? How do I share data between requests? and Store large data or a service connection per Flask session.
如果要从url中的模板传递值,则可以使用查询参数:
If you want to pass a value from a template in a url, you can use a query parameter:
<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)
这篇关于如何在Flask页面之间传递变量?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!