シリアライザーを書き直すことなく、オブジェクトを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)
オブジェクトをシリアル化して目的を達成する簡単な方法は、次のように__dict__
を使用することです。
def main():
session['my_object'] = Test(1, 2, 3).__dict__
return redirect('retrieve')