Django Basics
10 examples to get you started with Django 5.2 - 7 basic and 3 intermediate.
Prerequisites
uv pip install "django>=5.2"
django-admin startproject config .
python manage.py migrate- Django 5.2 targets Python 3.14.
- Use
python manage.py runserverfor local development.
Basic Examples
1. Project and App Layout
Settings, URLs, and an app module.
# config/urls.py
from django.contrib import admin
from django.urls import path
from hello import views
urlpatterns = [
path("admin/", admin.site.urls),
path("", views.home),
]- Projects hold settings; apps hold features.
- Wire views in root
urls.py. - Run migrations before serving data models.
Related: Models & the ORM - database models
2. Function-Based View
Return HTTP responses from Python callables.
from django.http import JsonResponse
def home(request):
return JsonResponse({"message": "Hello, Django"})- Views receive
requestfirst. JsonResponsefor simple APIs.- Class-based views scale better for mixins.
3. URL Patterns with Parameters
Capture path segments.
from django.urls import path
from . import views
urlpatterns = [path("users/<int:user_id>/", views.user_detail)]- Converters validate segment types.
- Names enable reverse lookups.
- Trailing slashes are conventional.
4. Settings Module
Configure installed apps and database.
# config/settings.py excerpt
INSTALLED_APPS = ["django.contrib.admin", "hello"]
DATABASES = {"default": {"ENGINE": "django.db.backends.sqlite3", "NAME": "db.sqlite3"}}- Keep secrets in environment variables.
- Split settings per environment in mature projects.
- SQLite is fine for local dev only.
5. Admin Site
Built-in CRUD UI for models.
from django.contrib import admin
from .models import Item
admin.site.register(Item)- Register models on
admin.site. - Customize list displays in
ModelAdmin. - Protect admin behind strong auth.
Related: The Admin - customization
6. Templates
Server-rendered HTML with Django template language.
from django.shortcuts import render
def home(request):
return render(request, "home.html", {"title": "Django"})- Templates live under
templates/. - Context dict passes variables.
- Use template inheritance for layouts.
Related: Templates & Forms - forms
7. Management Commands
CLI tasks via manage.py.
from django.core.management.base import BaseCommand
class Command(BaseCommand):
help = "Demo command"
def handle(self, *args, **options):
self.stdout.write("ok")- Place commands in
management/commands/. - Use for cron-friendly maintenance.
- Keep commands idempotent.
Intermediate Examples
8. Middleware Hook
Process requests globally.
MIDDLEWARE = [
"django.middleware.security.SecurityMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
"django.middleware.common.CommonMiddleware",
]- Order matters for sessions and CSRF.
- Add custom middleware sparingly.
- Prefer view decorators for localized concerns.
Related: Caching & Performance - cache middleware
9. AppConfig
Explicit app initialization.
from django.apps import AppConfig
class HelloConfig(AppConfig):
default_auto_field = "django.db.models.BigAutoField"
name = "hello"- Use
default_app_configpattern viaAppConfig. - Run ready() for signals carefully.
- BigAutoField is default for PKs.
10. JSON API View
Return structured data without DRF.
from django.http import JsonResponse
from django.views.decorators.http import require_GET
@require_GET
def health(request):
return JsonResponse({"status": "ok"})- HTTP method decorators enforce verbs.
- DRF adds serializers and auth.
- Keep JSON views thin.
Related: Django REST Framework - viewsets
Stack versions: This page was written for Python 3.14.0 (stable 3.14, maintenance 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, and uv 0.6+.