Agent skill
Django Framework
Build production-ready web applications with Django MVC, ORM, authentication, and REST APIs
Install this agent skill to your Project
npx add-skill https://github.com/pluginagentmarketplace/custom-plugin-python/tree/main/skills/django-framework
SKILL.md
Django Framework
Overview
Master Django, the high-level Python web framework that encourages rapid development and clean, pragmatic design. Learn to build secure, scalable web applications with Django's batteries-included approach.
Learning Objectives
- Build full-stack web applications using Django MVC pattern
- Design and implement database models with Django ORM
- Implement user authentication and authorization
- Create RESTful APIs with Django REST Framework
- Deploy Django applications to production
Core Topics
1. Django Basics & Project Structure
- Django project setup and configuration
- Understanding MVT (Model-View-Template) pattern
- URL routing and views
- Django settings and environment variables
- Static files and media handling
Code Example:
# myapp/views.py
from django.shortcuts import render
from django.http import JsonResponse
from .models import Product
def product_list(request):
products = Product.objects.all()
return render(request, 'products/list.html', {'products': products})
def product_api(request):
products = Product.objects.values('id', 'name', 'price')
return JsonResponse(list(products), safe=False)
2. Django ORM & Database Models
- Model definition and field types
- Relationships (ForeignKey, ManyToMany, OneToOne)
- QuerySets and database queries
- Migrations and schema management
- Database optimization (select_related, prefetch_related)
Code Example:
# models.py
from django.db import models
from django.contrib.auth.models import User
class Category(models.Model):
name = models.CharField(max_length=100)
slug = models.SlugField(unique=True)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
verbose_name_plural = "Categories"
def __str__(self):
return self.name
class Product(models.Model):
name = models.CharField(max_length=200)
description = models.TextField()
price = models.DecimalField(max_digits=10, decimal_places=2)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
is_active = models.BooleanField(default=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return self.name
# Efficient querying
products = Product.objects.select_related('category', 'created_by').filter(is_active=True)
3. Authentication & Authorization
- User registration and login
- Password management
- Session management
- Permissions and groups
- Custom user models
- Social authentication
Code Example:
# views.py
from django.contrib.auth import authenticate, login, logout
from django.contrib.auth.decorators import login_required, permission_required
from django.shortcuts import redirect, render
def login_view(request):
if request.method == 'POST':
username = request.POST['username']
password = request.POST['password']
user = authenticate(request, username=username, password=password)
if user is not None:
login(request, user)
return redirect('dashboard')
return render(request, 'login.html')
@login_required
def dashboard(request):
return render(request, 'dashboard.html')
@permission_required('products.add_product')
def add_product(request):
# Only users with 'add_product' permission can access
return render(request, 'products/add.html')
4. Django REST Framework
- Serializers and validation
- ViewSets and routers
- Authentication (JWT, Token)
- Permissions and throttling
- Pagination and filtering
Code Example:
# serializers.py
from rest_framework import serializers
from .models import Product, Category
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = ['id', 'name', 'slug']
class ProductSerializer(serializers.ModelSerializer):
category = CategorySerializer(read_only=True)
category_id = serializers.IntegerField(write_only=True)
class Meta:
model = Product
fields = ['id', 'name', 'description', 'price', 'category', 'category_id', 'created_at']
# views.py
from rest_framework import viewsets
from rest_framework.permissions import IsAuthenticatedOrReadOnly
class ProductViewSet(viewsets.ModelViewSet):
queryset = Product.objects.all()
serializer_class = ProductSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
def get_queryset(self):
queryset = super().get_queryset()
category = self.request.query_params.get('category')
if category:
queryset = queryset.filter(category__slug=category)
return queryset
Hands-On Practice
Project 1: Blog Application
Build a full-featured blog with user authentication.
Requirements:
- User registration and login
- Create, edit, delete posts
- Comments system
- Categories and tags
- Search functionality
- Admin interface
Key Skills: Django models, views, forms, authentication
Project 2: E-commerce API
Create a RESTful API for an e-commerce platform.
Requirements:
- Product catalog with categories
- Shopping cart management
- Order processing
- User authentication with JWT
- API documentation
- Rate limiting
Key Skills: Django REST Framework, serializers, authentication
Project 3: Task Management System
Build a collaborative task management application.
Requirements:
- User registration and teams
- Create and assign tasks
- Task status tracking
- File attachments
- Real-time notifications
- Permission-based access
Key Skills: Complex models, permissions, file handling
Assessment Criteria
- Set up Django projects with proper structure
- Design normalized database schemas
- Implement CRUD operations efficiently
- Secure applications with authentication
- Build RESTful APIs following best practices
- Write Django tests (unit and integration)
- Deploy to production environment
Resources
Official Documentation
- Django Docs - Official documentation
- Django REST Framework - DRF documentation
- Django Girls Tutorial - Beginner-friendly
Learning Platforms
- Django for Beginners - Book and tutorials
- Two Scoops of Django - Best practices
- TestDriven.io - Django with TDD
Tools
- Django Debug Toolbar - Debugging
- django-extensions - Useful utilities
- Celery - Async tasks
- PostgreSQL - Recommended database
Next Steps
After mastering Django, explore:
- FastAPI - Modern, fast web framework
- Celery - Asynchronous task queue
- Docker - Containerization for deployment
- AWS/Heroku - Cloud deployment platforms
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
Debugging
Python debugging techniques, pdb, and IDE debugging tools
Pandas Data Analysis
Master data manipulation, analysis, and visualization with Pandas, NumPy, and Matplotlib
FastAPI
FastAPI web framework for building modern APIs with async support
Poetry Packaging
Master Python package management with Poetry, dependency resolution, publishing, and project structure
Python Performance
Master Python optimization techniques, profiling, memory management, and high-performance computing
Python Fundamentals
Master Python syntax, data types, control flow, functions, OOP, and standard library
Didn't find tool you were looking for?