Chapter Goal: Introduce the reader to terminology and structure of a decoupled architecture.
No of pages: 16
Sub -Topics
1. A review of the concept of monolithic applications vs decoupled applications.
2. What is decoupling?
3. Why and when to decouple?
4. A brief introduction to REST.
5. A brief introduction to GraphQL.
Chapter 2: JavaScript meets django.
Chapter Goal: Introduce the reader to the modern JavaScript scene, help the reader understand how modern frontend tools fit within Django.
No of pages: 13
Sub -Topics
1. An overview of modern JavaScript.
2. An overview of JavaScript and Django in production setups.
3. A review of the most popular frontend libraries: Vue, React, Next.js, and the differences between them.
Chapter 3: Modern Django and Django REST Framework.
Chapter goal: Introduce the reader to intermediate Django concepts, and Django REST framework.
No of pages: 11
Sub -Topics
1. A brief introduction to Django REST framework and how it fits within a Django project, compared to the basic Django building blocks (MVT architecture, forms, models, views).
2. An introduction to ASGI and async Django.
Chapter 4: Advantages and disadvantages of a decoupled architecture.
Chapter Goal: Help the reader make an informed choice by outlining advantages and disadvantages of a decoupled architecture.
No of pages: 12
Sub -Topics
1. Why and when to decouple?
2. An overview of the various approaches for decoupling a Django project. How to choose between the various approaches.
3. Advantages of decoupling a Django project.
4. Disadvantages of decoupling a Django project.
Chapter 5: Setting up a Django project.
Chapter Goal: Help the reader to prepare a Django project.
No of pages: 9
Sub -Topics
1. How to split setting files.
2. How to configure Django to use environment variables.
3. How to run Django under ASGI.
Chapter 6: Decoupled Django with Django REST Framework.
Chapter Goal: Help the reader understand how to decouple a Django project with Django REST framework.
No of pages: 31
Sub -Topics
1. How to install and enable Django REST framework.
2. Django REST framework serializers.
3. How to create API endpoint with Django REST framework.
4. Django REST relationships.
5. Working with Vue.js in Django.
Chapter 7: API security, and deployment
Chapter Goal: Help the reader secure and deploy a decoupled Django project.
No of pages: 23
Sub -Topics
1. Django and Django REST hardening
2. Deploying a decoupled Django project
Chapter 8: Django REST meets Next.js.
Chapter Goal: Help the reader pair a Django REST project with Next.js, the React framework.
No of pages: 24
Sub -Topics
1. Django as a headless CMS
2. A reintroduction to React and its ecosystem
3. Working with Next.js and Django REST
Chapter 9: Testing in a Decoupled World.
Chapter Goal: Teaches the reader how to test a decoupled Django REST project and a JavaScript frontend.
No of pages: 22
Sub -Topics
1. A brief introduction to functional and unit testing.
2. Testing the frontend with Cypress
3. Testing Django REST framework and Django
Chapter 10: Authentication and authorization Django REST framework.
Chapter Goal: Help the reader understand how to set up authentication and authorization in a decoupled Django project.
No of pages: 21
Sub -Topics
1. A review of the most important authentication mechanisms in Django and Django REST framework
2. What is token based authentication? What is JWT? JWT drawbacks
3. Using session-based authentication for single-page apps
4. How to handle authentication in the frontend
Chapter 11: GraphQL in Django with Ariadne.
Chapter Goal: Help the reader understand what GraphQL is and how it fits into the Python/Django landscape.
No of pages: 39
Sub -Topics
1. Creating a GraphQL schema in Ariadne
2. Working with resolvers
3. Implementing mutations
4. Connecting React to a GraphQL backend
Chapter 12: GraphQL in Django with Strawberry.
Chapter Goal: Help the reader understand in practice how to decouple a Django project with GraphQL and Strawberry.
No of pages: 30 (estimated)
Sub -Topics
1. Creating a GraphQL schema in Straberry
2. Working with resolvers
3. Implementing mutations in the frontend
Valentino Gagliardi is a freelance consultant with a wealth of experience in the IT industry. He spent the last 8 years as a front-end consultant, providing advice and help, coaching and training on JavaScript and React. He worked as an instructor for multiple training agencies around the country, running in-person workshops and creating learning paths for aspiring developers. He loves to share his knowledge on his blog with tutorials reaching over 100,000 monthly visits. An avid Django user, he is active in the Python community as a speaker, and as a coach for Django Girls.
Apply decoupling patterns, properly test a decoupled project, and integrate a Django API with React, and Vue.js. This book covers decoupled architectures in Django, with Django REST framework and GraphQL. With practical and simple examples, you’ll see firsthand how, why, and when to decouple a Django project.
Starting with an introduction to decoupled architectures versus monoliths, with a strong focus on the modern JavaScript scene, you’ll implement REST and GraphQL APIs with Django, add authentication to a decoupled project, and test the backend. You’ll then review functional testing for JavaScript frontends with Cypress. You will also learn how to integrate GraphQL in a Django project, with a focus on the benefits and drawbacks of this new query language.
By the end of this book, you will be able to discern and apply all the different decoupling strategies to any Django project, regardless of its size.
You will:
Choose the right approach for decoupling a Django project
Build REST APIs with Django and a Django REST framework