DRF + React
DRF + React
William S. Vincent
Who Am I?
● Freelance software developer
● Early employee at Quizlet, other startups
● Books
William S. Vincent
API
● Application Programming Interface (API)
William S. Vincent
HTTP
● HTTP: Communications protocol for the web
● https://mysite.com/api/users/<id>
# GET returns a single user
William S. Vincent
Django APIs
William S. Vincent
Building APIs with Django
● Multiple packages available
● Django Rest Framework the clear favorite
○ Easily add to existing Django sites
○ Complete feature set
○ Very mature
William S. Vincent
Django vs Django API Structure
Django Django API
template.html serializers.py
urls.py
views.py
models.py
William S. Vincent
Django Rest Framework
William S. Vincent
Django + DRF
● Add DRF to existing(!) Django sites
● Only need models.py file from regular Django
● Write DRF-specific urls.py, views.py, and
serializers.py files
William S. Vincent
Django Blog
1. Create a new Django project/app
2. Update models.py and admin.py
3. Add blog posts via Django admin
https://github.com/wsvincent/djangoboston-drf-react-blog
William S. Vincent
Adding DRF
● Install, update settings.py
● Update urls.py (project/app level)
● Update views.py
William S. Vincent
Serializers
class PostSerializer(serializers.ModelSerializer):
class Meta:
fields = ('id', 'title', 'body',)
model = models.Post
William S. Vincent
Browsable API
William S. Vincent
CORS (Cross-Origin Resource Sharing)
William S. Vincent
What We Didn’t Cover
● Viewsets/Routers
● Authentication/Permissions
● Documentation
● Tests, Throttling, Pagination, etc.
William S. Vincent
Adding React
Or Vue, Angular, etc...
William S. Vincent
React setup
William S. Vincent
Project structure
frontend
├── public
├── src
├── App.js
backend
├── backend_project
├── settings.py
├── urls.py
├── posts
├── models.py
├── serializers.py
├── views.py
├── urls.py
William S. Vincent
App.js
William S. Vincent
Conclusion
William S. Vincent
Resources
Django Rest Framework Docs
http://www.django-rest-framework.org/
Demo Project
https://github.com/wsvincent/djangoboston-drf-react-blog
Slides
https://tinyurl.com/drf-react
My Site
https://wsvincent.com/
William S. Vincent