Serializers
The serializer is very useful class for handling your model in the RESTful projects. Our rest_framework_channels interface allows us to use this novel class directly.
Example
Let’s see the example.
from rest_framework_channels import generics
from rest_framework_channels.consumers import AsyncAPIConsumer
from rest_framework_channels.permissions import IsAuthenticated
from rest_framework_channels.decorators import async_action
class ChildActionHandler(generics.RetrieveAPIActionHandler):
serializer_class = TestSerializer
queryset = TestModel.objects.all()
@async_action()
def your_custom_action(self, *args, **kwargs):
action = kwargs.get('action', 'your_custom_action')
# get_object must recieve the action unlike original rest_framework
instance = self.get_object(action)
serializer = self.get_serializer(instance)
# your logic here
...
return serializer.data, 200
class ParentConsumer(AsyncAPIConsumer):
# You can define the routing inside the consumer similar with original django's urlpatterns
routepatterns = [
re_path(
r'test_child_route/(?P<pk>[-\w]+)/$',
ChildActionHandler.as_aaah(),
),
]
After establishing the connection and sending the below json,
{
'action': 'your_custom_action',
'route': 'test_child_route/5/'
}
your_custom_action
will be called.
Note
In this case, the kwargs
will include pk=5
. Our routing system parses the route
like the original django’s routing system . For more detai see routing section