擅长:python、mysql、java
<p>如果要传递一些用户不需要查看或控制的python值,可以使用会话:</p>
<pre><code>@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
</code></pre>
<p>会话的行为类似于dict,并序列化为JSON。所以您可以在会话中放置任何JSON可序列化的内容。但是,请注意,大多数浏览器不支持大于~4000字节的会话cookie。</p>
<p>您应该避免在会话中放入大量数据,因为每次请求都必须向客户机发送数据。对于大量数据,请使用数据库或其他数据存储。见<a href="https://stackoverflow.com/questions/32815451/are-global-variables-thread-safe-in-flask-how-do-i-share-data-between-requests">Are global variables thread safe in flask? How do I share data between requests?</a>和<a href="https://stackoverflow.com/questions/28423069/store-large-data-or-a-service-connection-per-flask-session">Store large data or a service connection per Flask session</a>。</p>
<hr/>
<p>如果要从url中的模板传递值,可以使用查询参数:</p>
<pre><code><a href="{{ url_for('b', my_var='my_value') }}">Send my_value</a>
</code></pre>
<p>将生成url:</p>
<pre><code>/b?my_var=my_value
</code></pre>
<p>可从b中读取:</p>
<pre><code>@app.route('/b')
def b():
my_var = request.args.get('my_var', None)
</code></pre>