Syllabus

1. Python Fundamentals (Revision)
    Object Oriented Programming
     Package installation and import
     Decorators
     Virtual Environments
     Unit testing
     Command line arguments
     `pip install`

2. HTTP and Web Fundamentals
     HTTP client-server architecture
     The request-response cycle
     Backend and the Frontend
     Web browser, web server and web application
     HTTP methods (`GET`, `POST`, `PUT`, `PATCH`, `DELETE`, `HEAD`)
     HTML Crash Course
        – Introduction to HTML
        – HTML elements and attributes
        – Common HTML elements (`body`, `div`, `b`, `strong`, `center`, `ul`, `li`, `table`, etc.)
        – Bootstrap
        – Common bootstrap classes and components

3. Git Fundamentals
     Introduction to git and version control system
     `git` installation
     `git init`
     `git clone`
     `git add`, `git rm`
     `git commit`
     `git remote add`
     `git remote remove`
     `git push`
     `git pull`
     `git branch`, `git checkout`
     `git cherry-pick`
     `git merge`
     `.gitignore`
     Local and remote repositories
     GitHub

4. The Django Framework
      Django installation
      IDE setup (Visual Studio Code)
      The `django-admin` command
      `django-admin startproject`
      `django-admin startapp`
      Django project structure

5. Hello Django!
     The MTV architecture
     `hello world` in Django (with and without template)
     `python manage.py runserver`
     The Django workflow (`urls`, `views`, `template`)
 
6. Views
     Function based views
     Accessing request params and body from views
     Class based views
     Generic views
     Extending generic views
     Error views

7.  URLs
      Fundamentals of URL patterns
      URL parameters
 
8. Models
     The Django ORM
     Defining models
     `python manage.py makemigrations`
     `python manage.py migrate`
     Model fields and their properties
     `CharField`, `IntegerField`, `FloatField`, `BooleanField`
     `ForeignKeyField`
     CRUD
     One-One, Many-One and Many-Many relationships
     Reverse relationships
     Serving media files
 
9.  QuerySet API
      `get`, `filter`
      Equality, range, membership, relational, referential filters
      Lazy Iterators
      Aggregation
      Annotation

10. Templates
      Introduction to django templates
      Django Templating Language
      Template tags and filters
      Template inheritance
      Serving static files

11. Forms
      Introduction to Forms
      Simple Forms
      Model Forms
      Form widgets and renderers
      Rendering forms in HTML
      Generic Forms
      Form API
      Form validation

12. Django Admin
      Registering admin
      Customizing lists
      Customizing forms
      Filtering and ordering objects

13. Authentication and Authorization
      Django User model
      Authentication decorators
      Django permissions

14. Sessions and Cookies
     Django sessions
     Client side cookies
     Sessions vs Cookies

15. Unit Testing and Debugging
      Django unit tests
      Executing test cases
      Debugging Django application

16. Working with databases
     SQLite Database
     Configure MySQL in Django
     Configure PostgreSQL in Django

17. Deployment
     Deployment checklist
     Media server deployment
     Web server deployment
     Case Study: Deployment in Heroku/AW