When to use this skill
Use this skill whenever the user wants to:
- Create Django web applications with models, views, and templates
- Configure projects, apps, migrations, and deployment
- Build REST APIs with Django REST Framework
- Set up Django admin, forms, and authentication
How to use this skill
Workflow
- Create project — scaffold with
django-admin startproject - Add apps — create feature apps with
python manage.py startapp - Define models — write models, create and run migrations
- Build views and URLs — implement views, wire URL patterns
- Test and deploy — run tests, configure production settings
Quick Start Example
# models.py
from django.db import models
class Article(models.Model):
title = models.CharField(max_length=200)
body = models.TextField()
published_at = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ['-published_at']
def __str__(self):
return self.title
# views.py
from django.shortcuts import render, get_object_or_404
from .models import Article
def article_list(request):
articles = Article.objects.all()
return render(request, 'articles/list.html', {'articles': articles})
def article_detail(request, pk):
article = get_object_or_404(Article, pk=pk)
return render(request, 'articles/detail.html', {'article': article})
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('articles/', views.article_list, name='article-list'),
path('articles/<int:pk>/', views.article_detail, name='article-detail'),
]
# Setup workflow
django-admin startproject myproject
python manage.py startapp articles
python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver
Django REST Framework Example
# serializers.py
from rest_framework import serializers
from .models import Article
class ArticleSerializer(serializers.ModelSerializer):
class Meta:
model = Article
fields = ['id', 'title', 'body', 'published_at']
# views.py
from rest_framework import viewsets
from .models import Article
from .serializers import ArticleSerializer
class ArticleViewSet(viewsets.ModelViewSet):
queryset = Article.objects.all()
serializer_class = ArticleSerializer
Best Practices
- One app per responsibility; normalize models and add database indexes
- Keep views thin — place business logic in services or model methods
- Always enable CSRF protection and configure security middleware
- Use
select_relatedandprefetch_relatedto avoid N+1 queries - Run tests with
python manage.py test; use--parallelfor speed
Reference
- Official documentation: https://docs.djangoproject.com/
Keywords
django, ORM, MTV, migrations, Python web, REST framework, admin, views, templates