SlideShare a Scribd company logo
REST EASY 
WITH 
DJANGO-REST-FRAMEWORK 
MARCEL CHASTAIN (@MARCELCHASTAIN) 
LA DJANGO - 2014-10-28
WHAT WE’LL COVER 
• What’s REST? Why/when would we use it? 
• REST challenges 
• Django solutions 
• Installing DRF 
• DRF Core Components (and Django counterparts) 
• Building our Demo API 
• Customizing 
• Resources
DJANGO-REST-FRAMEWORK 
ABOUT 
REST
…BUT I’M NOT TIRED
BUT I’M NOT TIRED 
REST stands for Representational State Transfer 
All 4 CRUD operations 
Uses HTTP requests to: 
• Post data(Create, Update) 
• Read data 
• Delete
WHY REST? 
Better than SOAP 
XML is the stuff of nightmares 
Uses JSON for data structures 
Popular – most modern 3rd party web APIs use RESTful 
endpoints
COMMON USE-CASES 
Single-Page Applications 
Real-Time Services 
SaaS APIs 
Creating external APIs for existing sites 
Mobile Apps 
WebComponents, Polymer, modular site design 
Modern JS Site Frameworks (Angular, Ember, Backbone, etc)
SOUNDS SIMPLE 
ENOUGH!
ALL TOGETHER NOW:
ALL TOGETHER NOW: 
We should 
roll our own!
… OK JUST BE SURE 
TO INCLUDE 
• serialization/deserialization
… OK JUST BE SURE 
TO INCLUDE 
• serialization/deserialization 
• parsing
… OK JUST BE SURE 
TO INCLUDE 
• serialization/deserialization 
• parsing 
• model introspection
… OK JUST BE SURE 
TO INCLUDE 
• serialization/deserialization 
• parsing 
• model introspection 
• relationship traversal 
• pluggable authentication 
• permissions 
• url structure 
• proper HTTP methods 
• pagination 
• forms 
• error handling 
• request filters 
• consistency 
• maybe some generic views 
• request throttling 
• …and tests!
ALL TOGETHER NOW:
REST Easy with Django-Rest-Framework
EXACTLY, WONDER WOMAN.
PROPER SOLUTIONS 
django-rest-framework 
• 900+ forks 
• 304 contributors 
• 3k stars 
• The greatest documentation 
I’ve seen in a library 
django-tastypie 
• 900+ forks 
• 112 contributors 
• 2.6k stars 
• Delicious-sounding name
…YOU’VE GOT 
OPTIONS
DJANGO-REST-FRAMEWORK 
THE SETUP
INSTALLATION 
pip install djangorestframework 
pip install markdown # optional 
pip install django-filter # optional
INSTALLATION (2) 
Add to INSTALLED_APPS 
# settings.py 
INSTALLED_APPS = ( 
... 
‘rest_framework’, 
)
INSTALLATION (3) 
Include the login/logout views 
# urls.py
MODELS
MODELS
MODELS 
DJANGO MODELS
DJANGO-REST-FRAMEWORK 
THE CORE 
COMPONENTS
IN TRADITIONAL 
DJANGO: 
1. Models/Querysets 
2. Class-Based Views/Mixins 
3. Generic Views 
4. URLs 
5. HTTP Requests 
6. Rendered Responses 
IN DRF: 
1. Serializers 
2. APIViews/Mixins 
3. ViewSets 
4. Routers 
5. HTTP Requests 
6. HTTP Responses
1. SERIALIZERS 
“Serializers allow complex data to be 
converted to native Python datatypes that 
can then be easily rendered in JSON, XML 
or other content types”
1.1 SERIALIZERS 
Declarative syntax, similar to Forms/ModelForms 
Automatically handle single Model instances or Querysets
1.2 SERIALIZERS 
# using it 
>>> note = Note.objects.first() 
>>> serializer = NoteSerializer(note) 
>>> serializer.data 
{u'id': 1, 
'body': u'First, do no harm.', 
'pub_date': datetime.datetime(2014, 10, 28, 11, 23, 30, tzinfo=<UTC>), 
'title': u'Hippocratic Oath', 
'user': { 
'id': 1, 
'username': u'demo', 
'email': u'demo@demo.com' 
} 
}
2. APIVIEWS 
Subclass of Django’s View class 
Simple - has .get() .post(), etc methods 
Some Differences: 
• Requests not normal HTTPRequest (more later) 
• Responses are not normal HTTPResponse (more later) 
• Auth, permissions, throttling done in advance
2.1 APIVIEWS
3. VIEWSETS 
Similar to Django’s Generic Views. 
“A type of Class-Based View that provides actions like 
.list() and .create() instead of .get() and .post()” 
Combine the logic for a set of related views into one class, 
for all the actions you’ll need to take.
3.1 VIEWSETS
3.2 MODELVIEWSETS
4. URL ROUTERS 
Automatic URL routing 
Simple, quick, consistent way of wiring your view logic to a 
set of URLs
4. URL ROUTERS 
Automatic URL routing 
Simple, quick, consistent way of wiring your view logic to a 
set of URLs
5. REQUESTS 
• In an APIView or ViewSet, ‘request’ is a DRF Request. 
• Incoming JSON data in request is processed just like 
Form data 
• Makes request data available as 
• request.DATA (vs .POST) 
• request.FILES 
• request.QUERY_PARAMS (vs .GET)
6. RESPONSES 
Uses content-negotiation to render final content 
(Hence why built-in API Console shows rich interface to us 
but would deliver plain JSON to an AJAX request)
IN TRADITIONAL 
DJANGO: 
1. Models/Querysets 
2. Class-Based Views/Mixins 
3. Generic Views 
4. URLs 
5. HTTPRequest 
6. HTTPResponse 
IN DRF: 
1. Serializers 
2. APIViews/Mixins 
3. ViewSets 
4. URL Routers 
5. DRF ‘Request’ 
6. DRF ‘Response’ 
REVIEW:
DJANGO-REST-FRAMEWORK 
THE DEMO
INSTALLATION (REPO) 
git clone https://github.com/marcelchastain/drf-demo.git
API RUNNING!
DJANGO-REST-FRAMEWORK 
CUSTOMIZING
CUSTOMIZING VIEWS 
• queryset 
• serializer_class 
• filter_class 
• authentication_classes (rest_framework.authentication) 
• permission_classes (rest_framework.permissions) 
• parser_classes (rest_framework.parsers) 
• renderer_classes (rest_framework.renderers) 
• throttle_classes (rest_framework.throttling) 
• paginate_by, max_paginate_by 
(Defaults for most can be set in settings.py)
DJANGO-REST-FRAMEWORK 
RESOURCES
RESOURCES 
Docs: http://www.django-rest-framework.org 
Tutorial: http://www.django-rest-framework.org/#tutorial 
IRC: #restframework on irc.freenode.net 
StackOverflow: ‘django-rest-framework’ tag 
Author: Tom Christie (@_tomchristie) 
Commercial Support: “DAB Apps” http://dabapps.com
REST EASY 
WITH 
DJANGO-REST-FRAMEWORK 
MARCEL CHASTAIN (@MARCELCHASTAIN) 
LA DJANGO - 2014-10-28

More Related Content

PPTX
Introduction to React JS
PDF
Data Structures
PDF
JavaScript - Chapter 12 - Document Object Model
PPTX
Diabetes Mellitus
PPTX
Hypertension
PPTX
Power Point Presentation on Artificial Intelligence
PPTX
Republic Act No. 11313 Safe Spaces Act (Bawal Bastos Law).pptx
Introduction to React JS
Data Structures
JavaScript - Chapter 12 - Document Object Model
Diabetes Mellitus
Hypertension
Power Point Presentation on Artificial Intelligence
Republic Act No. 11313 Safe Spaces Act (Bawal Bastos Law).pptx

What's hot (20)

PPTX
Introduction to Django Rest Framework
PDF
Django REST Framework
ODP
Django for Beginners
PDF
Django Rest Framework - Building a Web API
PDF
Angular - Chapter 7 - HTTP Services
PDF
Django Introduction & Tutorial
PPTX
Web development with django - Basics Presentation
PPTX
Django - Python MVC Framework
PPTX
PDF
Introduction to Django REST Framework
KEY
Introduction to Django
PPTX
Introduction to angular with a simple but complete project
PPTX
Angular Data Binding
PPTX
Angular modules in depth
PPTX
Node.js Express
PDF
Introduction to django framework
PDF
Spring Data JPA from 0-100 in 60 minutes
PDF
Swagger With REST APIs.pptx.pdf
PPTX
Angular Components.pptx
PPTX
Angular 14.pptx
Introduction to Django Rest Framework
Django REST Framework
Django for Beginners
Django Rest Framework - Building a Web API
Angular - Chapter 7 - HTTP Services
Django Introduction & Tutorial
Web development with django - Basics Presentation
Django - Python MVC Framework
Introduction to Django REST Framework
Introduction to Django
Introduction to angular with a simple but complete project
Angular Data Binding
Angular modules in depth
Node.js Express
Introduction to django framework
Spring Data JPA from 0-100 in 60 minutes
Swagger With REST APIs.pptx.pdf
Angular Components.pptx
Angular 14.pptx
Ad

Similar to REST Easy with Django-Rest-Framework (20)

KEY
Approaches to mobile site development
PDF
Plugin-based software design with Ruby and RubyGems
PDF
WebNet Conference 2012 - Designing complex applications using html5 and knock...
PPTX
Search Engines: Best Practice
PDF
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQL
PPTX
The future of web development write once, run everywhere with angular.js and ...
PDF
The future of web development write once, run everywhere with angular js an...
PDF
Python & Django TTT
PDF
Introduction to MongoDB
PPTX
Onion Architecture with S#arp
PPT
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
PDF
REST - Why, When and How? at AMIS25
PPTX
WRStmlDSQUmUrZpQ0tFJ4Q_a36bc57fe1a24dd8bc5ba549736e406f_C2-Week2.pptx
PPTX
WWW09 - Triplify Light-Weight Linked Data Publication from Relational Databases
PPTX
REST Enabling Your Oracle Database
PPTX
Django course
PDF
Continuous Deployment @ AWS Re:Invent
PDF
DBpedia's Triple Pattern Fragments
PDF
Firebase slide
Approaches to mobile site development
Plugin-based software design with Ruby and RubyGems
WebNet Conference 2012 - Designing complex applications using html5 and knock...
Search Engines: Best Practice
NoSQL and SQL - Why Choose? Enjoy the best of both worlds with MySQL
The future of web development write once, run everywhere with angular.js and ...
The future of web development write once, run everywhere with angular js an...
Python & Django TTT
Introduction to MongoDB
Onion Architecture with S#arp
SenchaCon 2016: LinkRest - Modern RESTful API Framework for Ext JS Apps - Rou...
REST - Why, When and How? at AMIS25
WRStmlDSQUmUrZpQ0tFJ4Q_a36bc57fe1a24dd8bc5ba549736e406f_C2-Week2.pptx
WWW09 - Triplify Light-Weight Linked Data Publication from Relational Databases
REST Enabling Your Oracle Database
Django course
Continuous Deployment @ AWS Re:Invent
DBpedia's Triple Pattern Fragments
Firebase slide
Ad

Recently uploaded (20)

DOCX
The Five Best AI Cover Tools in 2025.docx
PDF
Sensix-Tech-Pvt-Ltd-Company-Profile (1).pdf
PDF
Perfecting Gamer’s Experiences with Performance Testing for Gaming Applicatio...
PDF
How to Seamlessly Integrate Salesforce Data Cloud with Marketing Cloud.pdf
PDF
PTS Company Brochure 2025 (1).pdf.......
PDF
Emergency Mustering solutions – A Brief overview
PDF
Become an Agentblazer Champion Challenge Kickoff
PDF
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
PDF
How Creative Agencies Leverage Project Management Software.pdf
PDF
The Role of Automation and AI in EHS Management for Data Centers.pdf
PPTX
Services offered by Dynamic Solutions in Pakistan
PDF
How to Confidently Manage Project Budgets
PDF
Best Mobile App Development Company in Lucknow - Code Crafter Web Solutions
PPTX
Computer Hardware tool: hand tools, diagnostics, ESD and cleaning tools
PDF
Become an Agentblazer Champion Challenge
PDF
A Practical Breakdown of Automation in Project Management
PPTX
AIRLINE PRICE API | FLIGHT API COST |
PDF
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
PDF
Comprehensive Salesforce Implementation Services.pdf
PPTX
Materi_Pemrograman_Komputer-Looping.pptx
The Five Best AI Cover Tools in 2025.docx
Sensix-Tech-Pvt-Ltd-Company-Profile (1).pdf
Perfecting Gamer’s Experiences with Performance Testing for Gaming Applicatio...
How to Seamlessly Integrate Salesforce Data Cloud with Marketing Cloud.pdf
PTS Company Brochure 2025 (1).pdf.......
Emergency Mustering solutions – A Brief overview
Become an Agentblazer Champion Challenge Kickoff
ShowUs: Pharo Stream Deck (ESUG 2025, Gdansk)
How Creative Agencies Leverage Project Management Software.pdf
The Role of Automation and AI in EHS Management for Data Centers.pdf
Services offered by Dynamic Solutions in Pakistan
How to Confidently Manage Project Budgets
Best Mobile App Development Company in Lucknow - Code Crafter Web Solutions
Computer Hardware tool: hand tools, diagnostics, ESD and cleaning tools
Become an Agentblazer Champion Challenge
A Practical Breakdown of Automation in Project Management
AIRLINE PRICE API | FLIGHT API COST |
Flood Susceptibility Mapping Using Image-Based 2D-CNN Deep Learnin. Overview ...
Comprehensive Salesforce Implementation Services.pdf
Materi_Pemrograman_Komputer-Looping.pptx

REST Easy with Django-Rest-Framework

  • 1. REST EASY WITH DJANGO-REST-FRAMEWORK MARCEL CHASTAIN (@MARCELCHASTAIN) LA DJANGO - 2014-10-28
  • 2. WHAT WE’LL COVER • What’s REST? Why/when would we use it? • REST challenges • Django solutions • Installing DRF • DRF Core Components (and Django counterparts) • Building our Demo API • Customizing • Resources
  • 5. BUT I’M NOT TIRED REST stands for Representational State Transfer All 4 CRUD operations Uses HTTP requests to: • Post data(Create, Update) • Read data • Delete
  • 6. WHY REST? Better than SOAP XML is the stuff of nightmares Uses JSON for data structures Popular – most modern 3rd party web APIs use RESTful endpoints
  • 7. COMMON USE-CASES Single-Page Applications Real-Time Services SaaS APIs Creating external APIs for existing sites Mobile Apps WebComponents, Polymer, modular site design Modern JS Site Frameworks (Angular, Ember, Backbone, etc)
  • 10. ALL TOGETHER NOW: We should roll our own!
  • 11. … OK JUST BE SURE TO INCLUDE • serialization/deserialization
  • 12. … OK JUST BE SURE TO INCLUDE • serialization/deserialization • parsing
  • 13. … OK JUST BE SURE TO INCLUDE • serialization/deserialization • parsing • model introspection
  • 14. … OK JUST BE SURE TO INCLUDE • serialization/deserialization • parsing • model introspection • relationship traversal • pluggable authentication • permissions • url structure • proper HTTP methods • pagination • forms • error handling • request filters • consistency • maybe some generic views • request throttling • …and tests!
  • 18. PROPER SOLUTIONS django-rest-framework • 900+ forks • 304 contributors • 3k stars • The greatest documentation I’ve seen in a library django-tastypie • 900+ forks • 112 contributors • 2.6k stars • Delicious-sounding name
  • 21. INSTALLATION pip install djangorestframework pip install markdown # optional pip install django-filter # optional
  • 22. INSTALLATION (2) Add to INSTALLED_APPS # settings.py INSTALLED_APPS = ( ... ‘rest_framework’, )
  • 23. INSTALLATION (3) Include the login/logout views # urls.py
  • 28. IN TRADITIONAL DJANGO: 1. Models/Querysets 2. Class-Based Views/Mixins 3. Generic Views 4. URLs 5. HTTP Requests 6. Rendered Responses IN DRF: 1. Serializers 2. APIViews/Mixins 3. ViewSets 4. Routers 5. HTTP Requests 6. HTTP Responses
  • 29. 1. SERIALIZERS “Serializers allow complex data to be converted to native Python datatypes that can then be easily rendered in JSON, XML or other content types”
  • 30. 1.1 SERIALIZERS Declarative syntax, similar to Forms/ModelForms Automatically handle single Model instances or Querysets
  • 31. 1.2 SERIALIZERS # using it >>> note = Note.objects.first() >>> serializer = NoteSerializer(note) >>> serializer.data {u'id': 1, 'body': u'First, do no harm.', 'pub_date': datetime.datetime(2014, 10, 28, 11, 23, 30, tzinfo=<UTC>), 'title': u'Hippocratic Oath', 'user': { 'id': 1, 'username': u'demo', 'email': u'[email protected]' } }
  • 32. 2. APIVIEWS Subclass of Django’s View class Simple - has .get() .post(), etc methods Some Differences: • Requests not normal HTTPRequest (more later) • Responses are not normal HTTPResponse (more later) • Auth, permissions, throttling done in advance
  • 34. 3. VIEWSETS Similar to Django’s Generic Views. “A type of Class-Based View that provides actions like .list() and .create() instead of .get() and .post()” Combine the logic for a set of related views into one class, for all the actions you’ll need to take.
  • 37. 4. URL ROUTERS Automatic URL routing Simple, quick, consistent way of wiring your view logic to a set of URLs
  • 38. 4. URL ROUTERS Automatic URL routing Simple, quick, consistent way of wiring your view logic to a set of URLs
  • 39. 5. REQUESTS • In an APIView or ViewSet, ‘request’ is a DRF Request. • Incoming JSON data in request is processed just like Form data • Makes request data available as • request.DATA (vs .POST) • request.FILES • request.QUERY_PARAMS (vs .GET)
  • 40. 6. RESPONSES Uses content-negotiation to render final content (Hence why built-in API Console shows rich interface to us but would deliver plain JSON to an AJAX request)
  • 41. IN TRADITIONAL DJANGO: 1. Models/Querysets 2. Class-Based Views/Mixins 3. Generic Views 4. URLs 5. HTTPRequest 6. HTTPResponse IN DRF: 1. Serializers 2. APIViews/Mixins 3. ViewSets 4. URL Routers 5. DRF ‘Request’ 6. DRF ‘Response’ REVIEW:
  • 43. INSTALLATION (REPO) git clone https://github.com/marcelchastain/drf-demo.git
  • 46. CUSTOMIZING VIEWS • queryset • serializer_class • filter_class • authentication_classes (rest_framework.authentication) • permission_classes (rest_framework.permissions) • parser_classes (rest_framework.parsers) • renderer_classes (rest_framework.renderers) • throttle_classes (rest_framework.throttling) • paginate_by, max_paginate_by (Defaults for most can be set in settings.py)
  • 48. RESOURCES Docs: http://www.django-rest-framework.org Tutorial: http://www.django-rest-framework.org/#tutorial IRC: #restframework on irc.freenode.net StackOverflow: ‘django-rest-framework’ tag Author: Tom Christie (@_tomchristie) Commercial Support: “DAB Apps” http://dabapps.com
  • 49. REST EASY WITH DJANGO-REST-FRAMEWORK MARCEL CHASTAIN (@MARCELCHASTAIN) LA DJANGO - 2014-10-28

Editor's Notes

  • #31: NoteSerializer.user would have been a plain primary key, but we use a nested serializer