如何在Flask页面之间传递变量? [英] How to pass a variable between Flask pages?

查看:164
本文介绍了如何在Flask页面之间传递变量?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

假设我有以下情况;

@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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆