Flask - 直接在会话中存储对象

13 浏览
0 Comments

Flask - 直接在会话中存储对象

这个问题已经有答案了:

如何使类成为JSON可序列化的

我想知道是否可以直接将对象存储在Flask会话中,而无需重新编写序列化器。我需要在我的类中实现哪些函数才能使其正常工作?

下面是示例代码。这就是我想要的样子。但是,当您尝试执行它时,它会抛出一个错误,如 TypeError:类型为\'Test\'的对象不可JSON序列化

非常感谢任何帮助!提前致谢! 🙂

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)

admin 更改状态以发布 2023年5月25日
0
0 Comments

一种简单的使对象序列化并实现所需功能的方法是使用 __dict__,如下所示:

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

0