无法在Flask会话中存储信息

时间:2015-03-22 19:56:25

标签: python session flask

我目前正在尝试将一个pandas数据框中的数据存储在一个烧瓶会话对象中,并在我的程序中稍后读取会话对象,但我不断得到一个'KeyError'。我有一个密钥集。

以下是示例代码:

@app.route('/test', methods = ['GET', 'POST'])
def test():
    if request.method == 'POST'
        if file and allowed_file(file.filename):
            df = pandas.io.parsers.read_csv(StringIO.StringIO(file.read()))
            session['data'] = df.to_json()
            return redirect('hello_world')

@app.route('/hello_world')
def hello_world():
    df = pandas.io.json.read_json(session['data'])
    return "Hello World"

重定向可能看起来很奇怪,我知道我没有对会话['数据']做任何事情,但这只是一个异常的例子,我不知道如何解决或为什么会产生错误。

编辑:

为了提供更多代码和程序来演示我收到的错误,我写了一个快速测试用例,可以在下面找到:

from flask import Flask, redirect, render_template, request, session, url_for
import pandas
import StringIO

app = Flask(__name__)

app.config['SECRET_KEY'] = 'my_secret_key'


@app.route('/', methods=['GET', 'POST'])
def hello():
    if request.method == 'POST':
        file = request.files['file']
        if file:
            df = pandas.io.parsers.read_csv(StringIO.StringIO(file.read()))
            session['data'] = df.to_json()
            return redirect(url_for('world'))
    return '''
    <!doctype html>
    <title>Upload new File</title>
    <h1>Upload new File</h1>
    <form action="" method=post enctype=multipart/form-data>
      <p><input type=file name=file>
         <input type=submit value=Upload>
    </form>
    '''

@app.route('/world/')
def world():
    df = pandas.io.json.read_json(session['data'])
    return "Hello World"

if __name__ == '__main__':
    app.run(debug=True)

我收到的错误是KeyError:'data'并追溯产生错误的代码行产生一行:df = pandas.io.json.read_json(session ['data'])

0 个答案:

没有答案