Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
● developer@keycrunch & founder@offerqa
● built REST api in Django since 2013
follow me on twitter @linuxcity
who am I?
What is REST?
http://en.wikipedia.org/wiki/Representational_State_Transfer
Web API that uses GET, POST, PUT, PATCH, DELETE...
What do you need from a framework
● serialization and deserialization
● pagination
● data validation
● authentication
● cu...
Good to have
● Really good test coverage of their code
● Decent performance
● Documentation
● An active community to advan...
And Django REST Framework has them all!!!
Why Django REST framework
● Class-based views
● it’s very django-ish
...As it's based off Django 1.3 style Class Based Vie...
And Most of All
I enjoyed working with it
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
yea...
a minimal REST API
models.py
class Post(models.Model):
post = models.TextField()
class PostSerializer(serializers.Hyperlin...
a minimal REST API
views.py
class PostViewSet(viewsets.ModelViewSet):
queryset = Post.objects.all()
serializer_class = Pos...
a minimal REST API
urls.py
router = routers.SimpleRouter()
router.register(r'posts', views.PostViewSet)
urlpatterns = patt...
a minimal REST API
This project can be found at:
https://github.com/zheli/django-rest-kog
tag: v1
Key elements
serializer
views
serializer
serializing:
querysets, model instances->python native
datatypes
deserializing:
data string->model instances
serializer
automatic serializers from model:
ModelSerializer, HyperlinkedModelSerializer
views
automatic views from model:
ModelViewSets: CRUD + list
ReadOnlyModelViewSet: retrieve + list
test
APIRequestFactory() from RequestFactory
APIClient() from Client
Test POST request:
class PostTests(APITestCase): ←- s...
documentation
Django REST Swagger
documentation
documentation
REST Framework Docs
documentation
Questions & Feedbacks
Interesting?
What’s next?
Introduction to Django REST Framework, an easy way to build REST framework in Django
Nächste SlideShare
Wird geladen in …5
×

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

1.967 Aufrufe

Veröffentlicht am

A simple introduction slides for Django REST Framework.

Code example can be downloaded here: https://github.com/zheli/django-rest-kog

Veröffentlicht in: Software
  • Loggen Sie sich ein, um Kommentare anzuzeigen.

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? http://en.wikipedia.org/wiki/Representational_State_Transfer 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 http://pydanny.com/choosing-an-api-framework-for-django.html ● 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 models.py class Post(models.Model): post = models.TextField() class PostSerializer(serializers.HyperlinkedModelSerializer): class Meta: model = Post
  10. 10. a minimal REST API views.py class PostViewSet(viewsets.ModelViewSet): queryset = Post.objects.all() serializer_class = PostSerializer
  11. 11. a minimal REST API urls.py 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: https://github.com/zheli/django-rest-kog 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 = self.client.post(‘/posts/’, {‘post’: ‘this is a test post’}, format=’json’) self.assertEqual(response.status_code, status.HTTP_201_CREATED) assert response.data 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?

×