Beginning Django
- Introduction to the Django framework
Django design principles
Install Django
Start a Django project
Set up a database for a Django project
Set up content, understand Django urls, templates and apps
Set up the Django admin site
- Django urls & views
Url paths and regular expressions
Url parameters, extra options & query strings
Url consolidation and modularization
Url naming and namespaces
View method requests
View method responses
View method middleware
Middleware flash messages in view methods
Class-based views
- Django templates
Django template syntax
Django template configuration
Create reusable Django templates
Built-in Django context processors
Custom Django context processors
Built-in Django filters
Built-in Django tags
Custom Django filters for Django templates
- Jinja templates in Django
Jinja advantages & disadvantages
Transition to Jinja templates from Django templates
Jinja template configuration in Django
Create reusable Jinja templates
Jinja globals: Access data on all Jinja templates, like Django context processors
Jinja built-in statements/tags and functions (like Django template tags)
Jinja built-in filters & tests (like Django filters)
Custom filters & tests in Jinja
Jinja extensions
Jinja policies
- Django application management
Django settings.py for the real world
Set up Django on a WSGI/ASGI server
Set up static web page resources -- Images, CSS, JavaScript
Django logging
Django email service
Debug Django applications
Django management commands
- Django forms
Django form structure and workflow
Django form processing: Initialization, field access, validation and error handling
Django form field types: Widgets, options and validations
Set up the layout for Django forms in templates
Django custom form fields and widgets
Django advanced form processing: Partial forms, AJAX and files
Django formsets
- Django models
Django models and the migrations workflow
Django model data types
Django model default and custom behaviors
Relationships in Django models
Django model transactions
Django model migrations
Django model database tasks
Django model initial data set up
Django model signals
Django models outside of models.py
Django models and multiple databases
- Django model queries and managers
CRUD single records in Django models
CRUD multiple records in Django models
CRUD relationship records across Django models
Model queries by SQL keyword
Model queries with raw (open-ended) SQL
Model managers
- Django model forms & class views
Django model form structure, options and field mapping
Django model forms with relationships
Django model form processing
Django model formsets
Class-based views with models
- Django user management
Introduction to the Django user system
Permission checks and enforcement
User authentication and auto-management
Custom User model fields
Custom authentication back-ends
User management with Django allauth
Social authentication with Django allauth
- Django admin management
Set up Django models in the Django admin
Django admin read record options
Django admin create, update, delete record options
Django admin custom page layout, data & behaviors
Django admin CRUD permissions
Multiple Django admin sites
- REST services with Django
Introduction to REST services options for Django
Django REST framework concepts and introduction
Django REST framework security
- Django i18n, L10n and time zones
Default Django i18n, L10n & time zone behavior
Django language selection workflow
Django locale message bundles
- Django search
- Django async applications
- Python basics
Strings, unicode and other annoying text behaviors
Methods: Default, optional, *args & **kwargs arguments
Classes and subclasses
Loops, iterators and generators
List comprehensions, generator expressions, maps and filters
Lambda keyword for anonymous methods
Asynchronous behavior: Coroutines, threads, processes, event loops, asyncio, async & await