Module 1: Getting Started
The Bigger Picture
	- Look at HTML response
 
	- Look at REST API server
 
Your Development Environment
	- Install Python 3 based on the Operating System of our computer. Create a Virual Environment
 
	- Use Pip to install Django and the Django REST framework
 
	- Use pip requirements.txt to identify installed python components in a development environment
 
Installing PostgreSQL
	- Install PostgreSQL into our development environment
 
	- Use Psql to check our installation and create a new database
 
	- Use pip to install PostgreSQL support into Python
 
Django Projects and Apps
	- Create a project directory and use django-admin startproject
 
	- Use manage.py startapp to create a Django application
 
	- Review Django external application publishing guidelines
 
Using the Django Development Environment
	- Introduce settings.py and configuring our database
 
	- Highlight the DEBUG flag and placing sensitive information in settings.py
 
	- Use Django’s development webserver via the manage.py runserver command and seeing the Django initial default page
 
Module 2: The MVT Framework Approach
MVC and MVT Framework
	- Look at the concept of MVC and MVT Framework
 
	- Look at Django models
 
	- Look at Django template
 
Creating and Working with Models
	- Introduce Django model and how relationships between Models can be used
 
	- Create a Django model
 
	- Create methods on Django models and test them
 
Migrations and Database Queries
	- Consider what Django migrations are and have Django create schema migrations
 
	- Consider what data migrations are and create one, and then apply all migrations created so far in this video
 
	- Perform some simple queries against our database
 
Writing Our First View 
	- Discuss Django class based views and use view to create a simple view that returns a hard coded response
 
	- Perform URL configuration or routing at both the Project and App level to make our new view accessible. Access the view in a browser
 
	- Make use of URL querystring and kwarg parameters. Discuss the pros and cons of each approach
 
Routing and HTTP Methods
	- Discuss how Django handles requests from the request in to middleware, then URL config, then view and then the reverse for the response
 
	- Review URL configuration from previous video and discuss use of path() and re_path()
 
	- Cover methods (verbs) of Http Requests including Get and Post requests. How Http methods then translate to class methods
 
Using Templates
	- Explain how hardcoded responses are undesirable. Introduce Django’s TemplateView
 
	- Learn about using base templates and view specific templates that extend base templates. Learn how to make data available within templates.
 
	- Review template settings in settings.py and see our first set of templates in action
 
	- Explain how templates should not perform core logic, however we can use template tags and filters to perform presentation logic
 
Testing
	- Learn how we need to use automated testing tools and how we can write test cases that place our code under test
 
	- Make use of pqsl to configure PostgreSQL for testing
 
	- Develop Integration tests that make use of the Django test client
 
	- Develop unit tests that test specific view functions using a RequestFactory as well as class attributes
 
Module 3: Building Your Django RESTful API
Exploring RESTful APIs
	- Explain the difference between traditional web responses and API responses. Learn how REST provides an API on HTTP
 
	- Learn what Resources, HTTP Methods and CRUD operations are
 
	- Explain how a result of an API request is communicated via a status code
 
Writing a Simple Hello World API
	- Make use of a URL pattern configuration to give access to our API view
 
	- Define a View using the base View class that uses JsonResponse to return an API response
 
	- Include in our View definition validation of a name parameter and return an error if this is equal to fred. Show results in a browser
 
Exploring the DRF
	- Learn how the DRF helps us in providing code that we would otherwise have to provide ourselves many times over
 
	- Learn what the key parts of the DRF are, including serializers, DRF views, routers and authentication and permissioning. Learn how these relate to CRUD operations
 
	- Explore who uses the DRF and see the web browsable feature of the DRF
 
Serializing Models
	- Review our existing models with focus on the Bookmark Model, then we will define a serializer with create and update methods
 
	- Using the Python console, we will create some initial data in the database and then demonstrate what our serializers do with this data along with simulated received data
 
	- We will define a serializer based on Bookmark using a ModelSerializer
 
	- We will then demonstrate how this serializer can be used with a list of Bookmarks in the Python console
 
Refactoring Our API with the DRF
	- Learn about basic DRF view URL configuration, including format suffixes
 
	- Define a Bookmark List view that can build a list and create new Bookmarks
 
	- Learn about basic DRF detail view URL configuration. Define a Bookmark detail view that can get detail, update a Bookmark and delete a Bookmark
 
	- Watch a demonstration of all of the functionality previously developed in this video, including listing existing Bookmarks, creating new Bookmarks, updating existing Bookmarks and deleting them
 
Generic Django REST Framework Views
	- Make use of ListCreate-APIView for Bookmark listing and new Bookmark creation
 
	- Make use of RetriveUpdate-APIView for Bookmark detail queries, updating a Bookmark and deleting a Bookmark
 
	- Take advantage of the ModelViewset that combines all the functionality seen earlier in this video in one convenient package
 
Extra Viewset Actions and Routers
	- Learn about Hyperlinked-Model-Serializers and how they can create related links in our API. Significantly simplify our URL configuration with a DRF router
 
	- Create a specialised viewset action that can add a like to a Bookmark. Learn how to define this in the viewset and ensure the DRF router is aware of it. See how it is accessed from the browser
 
	- Consider each of the view strategies covered in this and previous videos and scenarios where each would be the best fit
 
Testing the API
	- Learn how to write an integration test of a DRF based viewset and place different actions under test
 
	- Learn how to write a unit test of specific methods of a DRF based viewset, how to isolate dependencies via patching and using mocks to test each operation of the code
 
	- See how the Django test runner is used in combination with DRF test tools