关于 Django Framework
面向 Django 学习者和 Python Web 开发者的框架学习指南,涵盖项目结构、ORM、认证授权和 Django REST Framework。通过博客、电商 API 与任务管理项目练习应用开发。
主要功能
- 01讲解 Django 项目结构与路由
- 02涵盖 ORM、模型和数据库迁移
- 03介绍认证、授权与权限
- 04包含 Django REST Framework 内容
- 05提供三个实践项目
适用场景
- 01构建带用户认证的博客
- 02开发电商 REST API
- 03实现协作式任务管理应用
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ pluginagentmarketplace/ custom-plugin-python --skill django-framework安装后在 Claude Code 中输入/django-framework确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
assets/config.yamlreferences/GUIDE.mdscripts/helper.py详细介绍
Django 框架
概述
掌握 Django——这款高级 Python Web 框架,旨在促进快速开发和简洁务实的设计。学习如何利用 Django 开箱即用的丰富功能,构建安全、可扩展的 Web 应用程序。
学习目标
- 使用 Django 的 MVC 模式构建全栈 Web 应用程序
- 使用 Django ORM 设计和实现数据库模型
- 实现用户身份验证和授权
- 使用 Django REST Framework 创建 RESTful API
- 将 Django 应用程序部署到生产环境
核心主题
1. Django 基础与项目结构
- Django 项目设置和配置
- 了解 MVT(Model-View-Template)模式
- URL 路由和视图
- Django 设置和环境变量
- 静态文件和媒体文件处理
代码示例:
# 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 与数据库模型
- 模型定义和字段类型
- 关系(ForeignKey、ManyToMany、OneToOne)
- QuerySet 和数据库查询
- 迁移和架构管理
- 数据库优化(select_related、prefetch_related)
代码示例:
# 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. 身份验证与授权
- 用户注册和登录
- 密码管理
- 会话管理
- 权限和组
- 自定义用户模型
- 社交身份验证
代码示例:
# 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
- 序列化器和验证
- ViewSet 和路由器
- 身份验证(JWT、Token)
- 权限和限流
- 分页和筛选
代码示例:
# 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
动手实践
项目 1:博客应用程序
构建功能齐全、带有用户身份验证的博客。
要求:
- 用户注册和登录
- 创建、编辑、删除文章
- 评论系统
- 分类和标签
- 搜索功能
- 管理界面
关键技能: Django 模型、视图、表单、身份验证
项目 2:电子商务 API
为电子商务平台创建 RESTful API。
要求:
- 带有分类的商品目录
- 购物车管理
- 订单处理
- 使用 JWT 进行用户身份验证
- API 文档
- 速率限制
关键技能: Django REST Framework、序列化器、身份验证
项目 3:任务管理系统
构建协作式任务管理应用程序。
要求:
- 用户注册和团队
- 创建和分配任务
- 任务状态跟踪
- 文件附件
- 实时通知
- 基于权限的访问控制
关键技能: 复杂模型、权限、文件处理
评估标准
- 使用合理的结构搭建 Django 项目
- 设计规范化的数据库架构
- 高效实现 CRUD 操作
- 使用身份验证保护应用程序
- 遵循最佳实践构建 RESTful API
- 编写 Django 测试(单元测试和集成测试)
- 部署到生产环境
资源
官方文档
- Django 文档 - 官方文档
- Django REST Framework - DRF 文档
- Django Girls 教程 - 适合初学者
学习平台
- Django 入门 - 书籍和教程
- Two Scoops of Django - 最佳实践
- TestDriven.io - 使用 TDD 学习 Django
工具
- Django Debug Toolbar - 调试
- django-extensions - 实用工具
- Celery - 异步任务
- PostgreSQL - 推荐的数据库
后续步骤
掌握 Django 后,可以进一步探索:
- FastAPI - 现代、快速的 Web 框架
- Celery - 异步任务队列
- Docker - 用于部署的容器化技术
- AWS/Heroku - 云部署平台
评论
支持 Markdown