Django Framework

Django Framework

Build production-ready web applications with Django MVC, ORM, authentication, and REST APIs

2Star
1Fork
更新于 1/23/2026
SKILL.md
readonly只读
name
Django Framework
description

Build production-ready web applications with Django MVC, ORM, authentication, and REST APIs

version
"2.1.0"

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

Learning Platforms

Tools

Next Steps

After mastering Django, explore:

  • FastAPI - Modern, fast web framework
  • Celery - Asynchronous task queue
  • Docker - Containerization for deployment
  • AWS/Heroku - Cloud deployment platforms

You Might Also Like

Related Skills

coding-agent

coding-agent

179Kdev-codegen

Run Codex CLI, Claude Code, OpenCode, or Pi Coding Agent via background process for programmatic control.

openclaw avataropenclaw
获取
add-uint-support

add-uint-support

97Kdev-codegen

Add unsigned integer (uint) type support to PyTorch operators by updating AT_DISPATCH macros. Use when adding support for uint16, uint32, uint64 types to operators, kernels, or when user mentions enabling unsigned types, barebones unsigned types, or uint support.

pytorch avatarpytorch
获取
at-dispatch-v2

at-dispatch-v2

97Kdev-codegen

Convert PyTorch AT_DISPATCH macros to AT_DISPATCH_V2 format in ATen C++ code. Use when porting AT_DISPATCH_ALL_TYPES_AND*, AT_DISPATCH_FLOATING_TYPES*, or other dispatch macros to the new v2 API. For ATen kernel files, CUDA kernels, and native operator implementations.

pytorch avatarpytorch
获取
skill-writer

skill-writer

97Kdev-codegen

Guide users through creating Agent Skills for Claude Code. Use when the user wants to create, write, author, or design a new Skill, or needs help with SKILL.md files, frontmatter, or skill structure.

pytorch avatarpytorch
获取

Implements JavaScript classes in C++ using JavaScriptCore. Use when creating new JS classes with C++ bindings, prototypes, or constructors.

oven-sh avataroven-sh
获取

Creates JavaScript classes using Bun's Zig bindings generator (.classes.ts). Use when implementing new JS APIs in Zig with JSC integration.

oven-sh avataroven-sh
获取