Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction to Django REST Framework, an easy way to build REST framework in Django


Published on

A simple introduction slides for Django REST Framework.

Code example can be downloaded here:

Published in: Software
  • Login to see the comments

Introduction to Django REST Framework, an easy way to build REST framework in Django

  1. 1. ● developer@keycrunch & founder@offerqa ● built REST api in Django since 2013 follow me on twitter @linuxcity who am I?
  2. 2. What is REST? Web API that uses GET, POST, PUT, PATCH, DELETE operations over HTTP.
  3. 3. What do you need from a framework ● serialization and deserialization ● pagination ● data validation ● authentication ● custom queryset ● proper HTTP response handling (errors, format and such) ● caching ● throttling ● permissions
  4. 4. Good to have ● Really good test coverage of their code ● Decent performance ● Documentation ● An active community to advance and support the framework
  5. 5. And Django REST Framework has them all!!!
  6. 6. Why Django REST framework ● Class-based views ● it’s very django-ish ...As it's based off Django 1.3 style Class Based Views (CBVs), it has a very familiar pattern. Actually, because of the quality of the documentation, I really prefer using django-rest-framework CBVs more than using Django's actual CBVs… -from ● neat design ...
  7. 7. And Most of All I enjoyed working with it
  8. 8. Requirement Django >1.4.11 so if you are still on Django 1.3, it’s time to update. And you should have done that three years ago!
  9. 9. a minimal REST API class Post(models.Model): post = models.TextField() class PostSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Post
  10. 10. a minimal REST API class PostViewSet(viewsets.ModelViewSet): queryset = Post.objects.all() serializer_class = PostSerializer
  11. 11. a minimal REST API router = routers.SimpleRouter() router.register(r'posts', views.PostViewSet) urlpatterns = patterns('', url(r'^', include(router.urls)), ….
  12. 12. a minimal REST API This project can be found at: tag: v1
  13. 13. Key elements serializer views
  14. 14. serializer serializing: querysets, model instances->python native datatypes deserializing: data string->model instances
  15. 15. serializer automatic serializers from model: ModelSerializer, HyperlinkedModelSerializer
  16. 16. views automatic views from model: ModelViewSets: CRUD + list ReadOnlyModelViewSet: retrieve + list
  17. 17. test APIRequestFactory() from RequestFactory APIClient() from Client Test POST request: class PostTests(APITestCase): ←- self.client == APIClient() def test_create_post(self): response =‘/posts/’, {‘post’: ‘this is a test post’}, format=’json’) self.assertEqual(response.status_code, status.HTTP_201_CREATED) assert is not None
  18. 18. documentation Django REST Swagger
  19. 19. documentation
  20. 20. documentation REST Framework Docs
  21. 21. documentation
  22. 22. Questions & Feedbacks Interesting? What’s next?