我有一个烧瓶应用程序,其中包含一些使用mySQL存储会话数据和会话ID的ajax调用。
我使用Flask的会话来保存会话ID,但无法使会话ID在视图中保持不变。
这一切都在本地运行时有效,但一旦我将其推送到服务器就不行了。
如何使用会话或其他方式存储唯一的会话ID?
$watch
HTML
from flask import session
@app.route('/get_data/', methods=['POST'])
def get_form_data():
session['session_id'] = random_key
if request.method == "POST":
...
@app.route('/process_data/')
def process_data():
get_from_db(session['session_id'])
编辑:我为会话使用设置了密钥,会话在特定功能中工作。
会话在<script type="text/javascript">
$(function() {
$("#chart").load("/get_data/", function() {
$('#check_count').load('/process_data/', function() {
});
});
});
</script>
函数中有效。下一个功能还需要会话数据,无法找到密钥。
答案 0 :(得分:0)
您是否设置了应用的密钥?
来自Flask网站:
要使用会话,您必须设置密钥。
# set the secret key. keep this really secret:
app.secret_key = 'A0Zr98j/3yX R~XHH!jmN]LWX/,?RT'
答案 1 :(得分:0)
在使用Ajax调用视图时,有很多关于如何使用flask上的“session”对象不起作用的线程。
我对此非常陌生,想要一个简单的解决方法,不涉及Redis服务器。我还将这个项目作为OpenShift上的免费套件运行,并添加更多墨盒只是为了传递会话ID,感觉有点矫枉过正。
因此,我最终将URL
中的“会话ID”存储为查询,并使用模板添加它。
$("#data_chart").load("/process_data" + {{ session_id }}");
@app.route('/process_data')
def process_data():
session_id = request.args.get("session_id")
# do a bunch of stuff here
# propagate the ID for other views to access=
session_string = '?session_id=%' % session_id
return render_template('output.html', session_id=session_string)