python - 如何在 Flask 页面之间传递变量?

标签 python 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 传递给 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/

相关文章:

python - 如何在不单击 tkinter python 的情况下读取单选按钮值

python - 来自两个数据帧的共现矩阵。 Python

python - Peewee Flask 尝试从 BooleanField 返回数据

python - 如何减少 Pandas DataFrame 的内存?

python - SQLObject - 更新多条记录

python - tensorflow 如何更改数据集

mysql - 带有 ModWSGI 和 flask 的 SQLAlchemy 中的 "Unknown MySQL Server"

Heroku 无法启动我的应用程序,但 `foreman start` 有效

Python Flask 服务未并行执行所有函数调用

python - 如何在 python Flask 中为日志文件创建配置文件