Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Some things to know about Django Rest Framework

xordoquy
December 12, 2013

Some things to know about Django Rest Framework

xordoquy

December 12, 2013
Tweet

More Decks by xordoquy

Other Decks in Programming

Transcript

  1. Freelance! (since 2004) Python Django! (Backend) Raven maintainer! (Sentry client)

    Former! PyGTK! contributor Various! pull requests irc: Linovia @linovia_net Expertise Dev
  2. Fully featured • Serializers • ModelSerializers • Parsers • Renderers

    • Authentication • Permission • Throttling • Routers • Views • ViewSets • Filtering • Testing • Pagination
  3. from rest_framework.decorators import api_view! ! @api_view(['GET'])! def hello_world(request):! return Response({"message":

    "Hello, world!"}) but loosely coupled Authentication Content negotiation Serializers Generic views
  4. pre/post save class MyCreateView(CreateAPIView):! model = models.MyModel! serializer_class = serializers.MySerializer!

    ! def post_save(self, obj, created):! if created:! obj.reviewers = [user1, user2]!
  5. Class based views class MyMixin(object):! model = models.MyModel! serializer_class =

    serializers.MySerializer! ! ! class MyCreateView(MyMixin, CreateAPIView):! pass! • MRO: mixins are on the left side
  6. # views.py! class UserViewSet(viewsets.ModelViewSet):! queryset = User.objects.all()! serializer_class = UserSerializer!

    ! # urls.py! router = DefaultRouter()! router.register(r'users', views.UserViewSet)! ! urlpatterns = patterns('',! url(r'^', include(router.urls)),! )! Viewsets & routers Nice to get started but optional
  7. Auth / Permissions • Auth are for knowing who you

    are ! • Permissions are to grant you access
  8. Testing Utilities • APIRequestFactory + format ! • force_authenticate •

    APIClient response = self.client.get('/users/4/')! self.assertEqual(response.data,! {'id': 4, 'username': 'lauren'})!
  9. Performances • Fast to prototype • Easy to tune •

    Django performance tips also applies !
  10. Temps em ms 0 10 20 30 40 50 60

    70 80 90 100 110 120 130 140 Full stack Serialisation Redis Content nego Middleware HttpResponse Database lookup Redis lookup Serialization Django request/response API view Response rendering