Django Fundamentals
Django is a Python web framework that provides an ORM, URL routing, templating, authentication, and an admin interface out of the box. It follows a batteries-included philosophy, letting developers build database-backed web applications quickly with conventions that handle common patterns.
itWeb development | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic: Django Fundamentals
Django is a Python framework for applications where the server owns data and business rules. It exists because assembling routing, database access, forms, templates, login, permissions, tests, and security settings from unrelated parts gives every project a new collection of seams to trip over. Django supplies a shared map. The map is not the territory, but it does stop everyone from driving into the same swamp separately.
The first useful picture is one request. A browser asks for a path. Middleware, the request and response wrapper, gets a chance to inspect it. The URLconf, Django's ordered path map, selects a view. The view coordinates the work, perhaps using a model or another service, then returns HTML, JSON, a redirect, or an error. If you can trace that trip, a great many Django mysteries lose their fake moustaches.
The second picture is about boundaries. A project holds settings and entry points for one configured application. An app groups one cohesive capability, such as a catalog or accounts feature. A model describes stored data, while a migration records how a database changes over time. The model says what you want. The migration says how the database gets there, which is a rather more consequential sentence when the database already contains somebody's Tuesday.
Django also draws a line around presentation and input. Templates render prepared context. Forms convert and validate submitted data. The server still validates it, and a logged-in person still needs authorization for the object they are touching. The admin is useful for trusted operational users. It is not a magic public product interface wearing a tie.
The surprise is that Django's integration does not remove responsibility. QuerySets can still ask the database for too much work. Auto-escaping does not make unsafe HTML safe. A generated migration can still be a dangerous deployment. The development server is still a development server, however confidently it is running on your laptop.
Start with the Intro when you need the complete map. Use Slides for the component relationships, Cheatsheet for commands and decision anchors, and Practice for a compact project loop. The Exercise follows one article through URLconf, form, model, redirect, and test. After that, the Reference tab is the route into the official detail. The framework is broad, but each part owns a particular problem. That is the trick, and also most of the paperwork.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://docs.djangoproject.com/en/6.0/
Supports
- Official organization of tutorials, topic guides, references, and how-to guides
- Framework areas including models, views, templates, forms, admin, testing, deployment, security, and common web tools
- https://docs.djangoproject.com/en/6.0/intro/overview/
Supports
- Django as a framework for database-driven web applications
- Models, migrations, generated database API, admin, URL configurations, views, templates, and component decoupling
- URL matching order and the request object passed to views
- https://docs.djangoproject.com/en/6.0/intro/tutorial01/
Supports
- Project and app definitions
- Project scaffold, settings, URL, WSGI, ASGI, and management files
- Development server limitation and initial request routing
- https://docs.djangoproject.com/en/6.0/intro/tutorial02/
Supports
- Database setup, installed apps, migrations, models, QuerySets, and admin setup
- Migration creation and application workflow
- https://docs.djangoproject.com/en/6.0/intro/tutorial03/
Supports
- Views returning responses or raising HTTP exceptions
- URL names, template loading, context, rendering, and generic views
- https://docs.djangoproject.com/en/6.0/intro/tutorial04/
Supports
- Form submission, CSRF tokens, validation, state changes, and redirects after successful POST requests
- https://docs.djangoproject.com/en/6.0/intro/tutorial05/
Supports
- Django testing concepts, test database behavior, test client, and testing views
- https://docs.djangoproject.com/en/6.0/topics/db/models/
Supports
- Models as the definitive source of stored-data fields and behavior
- Model classes, fields, table mapping, relationships, metadata, and automatic database API
- https://docs.djangoproject.com/en/6.0/topics/db/queries/
Supports
- Managers and QuerySets for creating, retrieving, filtering, updating, deleting, and relating model objects
- QuerySet laziness and evaluation behavior
- https://docs.djangoproject.com/en/6.0/ref/models/querysets/
Supports
- QuerySet method behavior
- select_related for loading single-valued relationships in the same query
- prefetch_related for separate related-object lookups
- https://docs.djangoproject.com/en/6.0/topics/db/optimization/
Supports
- Profiling first, query inspection, indexes, appropriate retrieval, and related-object loading
- https://docs.djangoproject.com/en/6.0/topics/migrations/
Supports
- Migrations as version control for database schema
- makemigrations and migrate responsibilities
- Data migrations, transactions, dependencies, and deployment considerations
- https://docs.djangoproject.com/en/6.0/topics/http/urls/
Supports
- Ordered URL matching, path converters, included URL configurations, names, namespaces, and URL reversal
- https://docs.djangoproject.com/en/6.0/topics/http/views/
Supports
- View functions accepting requests and returning responses
- HTTP errors and custom error views
- https://docs.djangoproject.com/en/6.0/topics/templates/
Supports
- Template engines, loading, rendering, context, variables, tags, filters, and backend configuration
- https://docs.djangoproject.com/en/6.0/ref/templates/language/
Supports
- Variables, tags, filters, comments, template inheritance, and automatic HTML escaping
- Presentation focus and limits of template processing
- https://docs.djangoproject.com/en/6.0/topics/forms/
Supports
- Bound forms, validation, cleaned data, error handling, rendering, and processing patterns
- GET and POST roles in form workflows
- https://docs.djangoproject.com/en/6.0/topics/forms/modelforms/
Supports
- ModelForm field generation, validation, saving, and explicit field-selection security guidance
- https://docs.djangoproject.com/en/6.0/ref/contrib/admin/
Supports
- Model registration, admin customization, permissions, actions, and the admin's internal management purpose
- https://docs.djangoproject.com/en/6.0/topics/auth/
Supports
- Authentication system scope across users, permissions, groups, sessions, and password handling
- https://docs.djangoproject.com/en/6.0/topics/auth/default/
Supports
- Authentication views, login protection, permissions, and access control tools
- https://docs.djangoproject.com/en/6.0/topics/testing/
Supports
- Django test framework, client, request factory, test cases, database tests, and advanced testing topics
- https://docs.djangoproject.com/en/6.0/topics/http/middleware/
Supports
- Middleware as hooks around request and response processing
- Middleware ordering, activation, and short-circuit behavior
- https://docs.djangoproject.com/en/6.0/topics/security/
Supports
- Protections and limitations for Cross-Site Scripting, Cross-Site Request Forgery, SQL injection, clickjacking, host validation, HTTPS, and uploaded content
- Importance of deployment configuration and supported releases
- https://docs.djangoproject.com/en/6.0/howto/deployment/
Supports
- WSGI and ASGI deployment choices
- Development server exclusion from production use
- Static-file and deployment guidance
- https://docs.djangoproject.com/en/6.0/howto/deployment/checklist/
Supports
- Secret key, debug, allowed hosts, HTTPS, cookies, static and uploaded files, database, backups, logging, and production checks
- Deployment checks as useful but incomplete architecture review
- https://www.djangoproject.com/weblog/2005/nov/16/firstrelease/
Supports
- Django 0.90 as the first packaged release in November 2005
- https://docs.djangoproject.com/en/2.0/releases/1.0/
Supports
- Django 1.0 as the compatibility milestone after more than three years of open-source development
- https://docs.djangoproject.com/en/1.8/releases/1.7/
Supports
- Django 1.7 schema migrations and the migrate command
- https://docs.djangoproject.com/en/2.0/releases/2.0/
Supports
- Django 2.0 simplified URL routing with path converters
- https://docs.djangoproject.com/en/2.2/releases/2.2/
Supports
- Django 2.2 as an LTS release and database constraint support
- https://docs.djangoproject.com/en/5.2/releases/3.0/
Supports
- Django 3.0 ASGI application support
- https://docs.djangoproject.com/en/5.2/releases/4.1/
Supports
- Django 4.1 asynchronous class-based view handlers and asynchronous QuerySet interface
- https://docs.djangoproject.com/en/5.2/releases/5.0/
Supports
- Django 5.0 database-computed defaults and database-side defaults
- https://www.django-rest-framework.org/
Supports
- Django REST Framework serializers, authentication, views, and browsable Web APIs
- https://wagtail.org/
Supports
- Wagtail as a Django CMS
- https://www.django-cms.org/
Supports
- django CMS as a Django content-management system
- https://saleor.io/
Supports
- Saleor as a commerce platform built with Django
- https://django-oscar.readthedocs.io/
Supports
- django-oscar as a domain-driven e-commerce framework for Django
- https://django-ninja.dev/
Supports
- Django Ninja API framework and type-hint based request validation
