web-dev-qa-db-ja.com

Flask-オブジェクトをセッションに直接保存する

シリアライザーを書き直すことなく、オブジェクトをFlaskセッションに直接格納できるかどうか疑問に思いました。これを取得するために、クラスに実装する必要のある関数はありますか?以下のサンプルコード。これは私が望むものです。しかし、それを実行しようとすると、エラーがスローされます。àlaTypeError: Object of type 'Test' is not JSON serializable

どんな助けでも大歓迎です!前もって感謝します! :)

import flask
from flask import Flask, session, redirect

class Test:
    def __init__(self, x, y, z):
    self.x = x
    self.y = y
    self.z = z

app = Flask(__name__)
app.secret_key = 'xyz'

@app.route('/')
def main():
    session['my_object'] = Test(1, 2, 3)
    return redirect('retrieve')

@app.route('/retrieve')
def return_my_object():
    my_object = session.get('my_object')
    return str(my_object)

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

オブジェクトをシリアル化して目的を達成する簡単な方法は、次のように__dict__を使用することです。

def main():
    session['my_object'] = Test(1, 2, 3).__dict__
    return redirect('retrieve')
2
bgse