Deprecated: this project haven't received the love it needs for a few years now. I kindly suggest using Pydantic for new projects (and for backend development, check out the awesome FastAPI framework!).
A fork of awesome R2DTO by nickswebsite.
Beerializer provides easy interface for transformation and validation of arbitrary python objects into DTOs suitable for receiving from and delivering to other services.
Let's start by creating a simple model class:
class Simpson(object):
def __init__(self):
self.first_name = ""
self.last_name = ""
def __str__(self):
return self.first_name + " " + self.last_name
To create a serializer, we need to map attributes to fields of our DTO:
class SimpsonSerializer(Serializer):
class Meta:
model = Simpson
first_name = fields.StringField(name="firstName")
last_name = fields.StringField(name="lastName")
When you get a payload that requires one of these serializers, call
Serializer.load(data)
.
>>> data = {
... "firstName": "Homer",
... "lastName": "Simpson",
... }
>>> s = SimpsonSerializer.load(data)
>>> s
<class '__main__.Simpson'>
>>> str(s)
'Homer Simpson'
To go the other way. Pass the object you want to transfer into the
dump
method:
>>> homer = Simpson()
>>> homer.first_name = "Homer"
>>> homer.last_name = "Simpson"
>>> s = SimpsonSerializer.dump(homer)
>>> s
{'firstName': 'Homer', 'lastName': 'Simpson'}
Ready for the journey? Install it, then check out the docs:
$ pip install -U beerializer