Flask - store object directly in a session
14,752
A simple way to make your object serialize and achieve what you want is to use __dict__
like so:
def main():
session['my_object'] = Test(1, 2, 3).__dict__
return redirect('retrieve')
Comments
-
fweidemann14 almost 2 years
I was wondering if it is possible to store an object directly in a Flask session, without the need to rewrite the serializer. Are there any functions I need to implement in my class in order to get this working? Sample code that is below. This is what I want it to look like. However, when you try to execute that it throws an error à la
TypeError: Object of type 'Test' is not JSON serializable
Any help is greatly appreciated! Thanks in advance! :)
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)
-
Sven Marnach almost 7 yearsI prefer
vars(Test(1, 2, 3))
, over accessing__dict__
directly, but that's essentially the same. Note that you will also need to deserialize the dictionary to aTest
object. I recommend adding methodsto_json()
andfrom_json()
to theTest
class and calling them manually. -
fweidemann14 almost 7 yearsthank you guys, working perfectly! ;)