Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Flask - store object directly in a session [duplicate]

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)
like image 346
fweidemann14 Avatar asked Aug 08 '17 11:08

fweidemann14


1 Answers

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')
like image 185
bgse Avatar answered Oct 05 '22 23:10

bgse