Question:
Pretty straightforward: I want to store a custom class
that I have created within a Cookie using Flask. I have already set up the thing that adds the cookie, but it doesn’t work due to it’s value being an object?
I don’t know much about flask, but according to docs the key and value have to be strings.
So a way to implement the value for your class is to just convert it to string using repr()
, but make sure your __repr__
implementation allows you to reconstruct the object. Dataclasses are an easy way.
Maybe you could also use the items of the __dict__
and convert the values to string if needed.
This object is coming from a library so I do not think I can directly edit it.
Can you possibly send the Repl link?
I just invited you, check your notifications. Feel free to fix it when you have a chance.
Okay, then you can create a function that converts it to a string, such as by using its __dict__
if possible. Use json
library to decode cookie. You can also store separate attributes in __dict__
as separate cookies maybe. Even if it has __slots__
instead, you can extract the attribute key-value pairs manually.
import pickle
from flask import Flask, request, make_response
app = Flask(__name)
class CustomObject:
def __init__(self, data):
self.data = data
custom_obj = CustomObject("Some data")
serialized_obj = pickle.dumps(custom_obj)
@app.route('/')
def set_cookie():
response = make_response('Cookie set')
response.set_cookie('custom_data', serialized_obj)
return response
if __name__ == '__main__':
app.run()