Django for web development
-
Django Fundamentals
- Python fundamentals for Django
- Virtual environments
- pip
- Django installation
- Django project structure
- Django applications
- settings.py
- urls.py
- manage.py
- Django development server
- Django configuration
- Environment variables
- Development vs production settings
-
Django CLI
- django-admin
- manage.py
- startproject
- startapp
- runserver
- check
- shell
- dbshell
- makemigrations
- migrate
- showmigrations
- sqlmigrate
- createsuperuser
- changepassword
- collectstatic
- test
- dumpdata
- loaddata
- inspectdb
- makemessages
- compilemessages
-
URLs & Routing
- URL patterns
- path()
- re_path()
- URL parameters
- Path converters
- Named URLs
- URL namespaces
- include()
- URL reversing
- reverse()
- redirect()
- resolve()
- URL organization
-
HTTP & Django Requests
- HTTP methods
- GET
- POST
- PUT
- PATCH
- DELETE
- HTTP status codes
- Request objects
- Response objects
- Headers
- Cookies
- Sessions
- Query parameters
- Form data
- JSON requests
- File uploads
-
Django Views
- Function-based views
- Class-based views
- Generic views
- TemplateView
- ListView
- DetailView
- CreateView
- UpdateView
- DeleteView
- View inheritance
- Mixins
- Decorators
- Custom responses
- JSON responses
-
Templates
- Django Template Language
- Template variables
- Template tags
- Template filters
- Template inheritance
- Base templates
- Template includes
- Custom template tags
- Custom template filters
- Static files
- Template context
-
Models
- Django models
- Model fields
- Field options
- Model metadata
- Model methods
- Model managers
- Model inheritance
- Abstract models
- Proxy models
- Model relationships
- One-to-one relationships
- Foreign keys
- Many-to-many relationships
- Choices
- Constraints
- Indexes
-
Django ORM
- QuerySets
- Query expressions
- Filtering
- Excluding
- Ordering
- Slicing
- get()
- create()
- update()
- delete()
- get_or_create()
- update_or_create()
- exists()
- count()
- first()
- last()
- values()
- values_list()
- annotate()
- aggregate()
- F expressions
- Q objects
- Subqueries
- Conditional expressions
-
Database Design
- Relational databases
- PostgreSQL
- Database normalization
- Primary keys
- Foreign keys
- Constraints
- Unique constraints
- Indexes
- Database transactions
- Isolation concepts
- Query optimization
- N+1 queries
-
Migrations
- Migration fundamentals
- makemigrations
- migrate
- Migration files
- Migration dependencies
- Data migrations
- RunPython
- Migration conflicts
- Squashing migrations
- Migration rollback
- Safe schema changes
-
Django Admin
- Django Admin
- Model registration
- ModelAdmin
- List display
- Search
- Filtering
- Ordering
- Admin actions
- Inline models
- Custom forms
- Permissions
- Admin customization
- Custom admin pages
-
Forms
- Django Forms
- ModelForms
- Form fields
- Form validation
- Custom validation
- clean()
- clean_field()
- Validation errors
- Widgets
- Form rendering
- File uploads
- Multiple forms
-
Authentication
- Django authentication
- Users
- Groups
- Permissions
- Password hashing
- Login
- Logout
- Authentication middleware
- LoginRequiredMixin
- PermissionRequiredMixin
- Custom user model
- User profile
- Password reset
- Email verification
- Social authentication
-
Authorization
- Permissions
- Groups
- Object-level permissions
- Custom permissions
- Permission decorators
- Permission mixins
- Role-based access control
- Access control patterns
-
Sessions & Cookies
- Django sessions
- Session backends
- Cookies
- Session security
- Session expiration
- Session-based authentication
- Session storage
-
Security
- CSRF
- XSS protection
- SQL injection protection
- Clickjacking protection
- Host validation
- Secure cookies
- HTTPS
- Security headers
- Content Security Policy
- Secret management
- Security middleware
- Security checklist
-
Static & Media Files
- Static files
- MEDIA_ROOT
- MEDIA_URL
- STATIC_ROOT
- STATIC_URL
- collectstatic
- FileField
- ImageField
- Storage backends
- User uploads
- Cloud storage
-
Django REST APIs
- Django REST Framework
- Serializers
- ModelSerializer
- APIView
- Generic API views
- ViewSets
- Routers
- Request parsing
- Response rendering
- Status codes
- Validation
- Pagination
- Filtering
- Ordering
-
API Authentication
- Session authentication
- Token authentication
- JWT
- OAuth 2.0
- API keys
- Authentication classes
- Permission classes
- CORS
- CSRF in APIs
- Rate limiting
-
API Design
- REST principles
- Resources
- Endpoints
- HTTP methods
- Status codes
- Request validation
- Response structure
- Error responses
- Pagination
- Filtering
- Sorting
- Versioning
- API documentation
-
Django Testing
- Django TestCase
- pytest
- pytest-django
- Unit tests
- Integration tests
- Model tests
- View tests
- API tests
- Form tests
- Authentication tests
- Test fixtures
- Factories
- Mocking
- Test database
- Test coverage
-
Django Signals
- Signals
- pre_save
- post_save
- pre_delete
- post_delete
- m2m_changed
- Custom signals
- Signal receivers
- Signal design problems
-
Middleware
- Middleware architecture
- Request middleware
- Response middleware
- Authentication middleware
- Custom middleware
- Middleware ordering
- Exception handling middleware
-
Caching
- Django caching
- Cache framework
- Per-view caching
- Template fragment caching
- Low-level cache API
- Redis
- Cache invalidation
- Cache keys
- Cache strategies
-
Background Tasks
- Background jobs
- Celery
- Redis
- Task queues
- Periodic tasks
- Retries
- Task monitoring
- Idempotent tasks
- Async tasks
-
Asynchronous Django
- ASGI
- WSGI
- Async views
- async def
- sync_to_async
- Django async ORM
- Async requests
- Async consumers
- Async limitations
-
Django Channels
- WebSockets
- Channels
- Consumers
- Routing
- Channel layers
- Redis channel layer
- Real-time notifications
- Real-time applications
-
Performance
- Query optimization
- select_related()
- prefetch_related()
- Database indexes
- Query profiling
- N+1 detection
- Caching
- Lazy QuerySets
- Pagination
- Connection management
- Django Debug Toolbar
- Application profiling
-
Django Management
- Custom management commands
- Command arguments
- Command options
- Command output
- Command errors
- Scheduled commands
- Data import
- Data export
- Automation scripts
-
Email
- Django email
- Email backends
- SMTP
- HTML email
- Email templates
- Transactional email
- Email verification
- Password reset emails
- Background email tasks
-
Internationalization
- Translations
- gettext
- gettext_lazy
- Locale middleware
- Language switching
- Translation files
- Timezone handling
- Localization
-
Advanced Django Architecture
- Fat models
- Service layer
- Repository pattern
- Selectors
- Managers
- Mixins
- Domain logic
- Application boundaries
- Dependency management
- Reusable applications
- Modular Django
-
Production Configuration
- Production settings
- Environment variables
- Secrets
- DEBUG
- ALLOWED_HOSTS
- Database configuration
- Static files
- Media files
- Logging
- Error reporting
- Security settings
-
Deployment
- Linux server
- Gunicorn
- Uvicorn
- Nginx
- ASGI deployment
- WSGI deployment
- PostgreSQL
- Redis
- Docker
- Docker Compose
- HTTPS
- SSL certificates
- Domain configuration
- DNS
- CI/CD
-
Django with Docker
- Dockerfile
- Docker Compose
- Django container
- PostgreSQL container
- Redis container
- Environment variables
- Volumes
- Networks
- Static files
- Database migrations
- Production containers
-
CI/CD
- Git
- GitHub
- GitHub Actions
- Automated testing
- Linting
- Formatting
- Build pipelines
- Deployment pipelines
- Database migrations
- Static files deployment
- Environment management
-
Observability
- Django logging
- Structured logging
- Error tracking
- Sentry
- Application metrics
- Health checks
- Database monitoring
- Performance monitoring
- Request tracing
-
Advanced ORM
- Advanced QuerySets
- Custom managers
- Custom QuerySet methods
- Expressions
- Subqueries
- OuterRef
- Exists
- Window functions
- Database functions
- Raw SQL
- Database-specific features
-
Advanced Django REST Framework
- Custom serializers
- Nested serializers
- Serializer validation
- Custom fields
- Custom permissions
- Custom authentication
- Custom pagination
- Custom filters
- Custom throttling
- API versioning
- OpenAPI
- Swagger
- DRF Spectacular
-
Django Security in Practice
- Authentication attacks
- Authorization vulnerabilities
- CSRF attacks
- XSS
- SQL injection
- IDOR
- Mass assignment
- File upload vulnerabilities
- Session attacks
- JWT security
- API security
- Rate limiting
- Security headers
-
Professional Django Development
- Project structure
- Code organization
- Reusable components
- Configuration management
- Database design
- API design
- Testing strategy
- Error handling
- Logging
- Documentation
- Code review
- Git workflow
- Dependency management
- Technical debt
- Refactoring
-
Real Django Projects
- CRUD application
- Authentication system
- REST API
- Admin dashboard
- Payment integration
- Background processing
- Real-time application
- File storage
- Email system
- Third-party API integration
- Dockerized application
- Production deployment
- CI/CD pipeline
- Monitoring