mcpField
D
Django Framework

Django Framework

github.com/pluginagentmarketplace开发6105 次安装44 周前更新
代码仓库

关于 Django Framework

面向 Django 学习者和 Python Web 开发者的框架学习指南,涵盖项目结构、ORM、认证授权和 Django REST Framework。通过博客、电商 API 与任务管理项目练习应用开发。

主要功能

  1. 01讲解 Django 项目结构与路由
  2. 02涵盖 ORM、模型和数据库迁移
  3. 03介绍认证、授权与权限
  4. 04包含 Django REST Framework 内容
  5. 05提供三个实践项目

适用场景

  1. 01构建带用户认证的博客
  2. 02开发电商 REST API
  3. 03实现协作式任务管理应用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pluginagentmarketplace/custom-plugin-python --skill django-framework

安装后在 Claude Code 中输入/django-framework确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

assets/
config.yaml
references/
GUIDE.md
scripts/
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 后,可以进一步探索:

  • FastAPI - 现代、快速的 Web 框架
  • Celery - 异步任务队列
  • Docker - 用于部署的容器化技术
  • AWS/Heroku - 云部署平台

评论

支持 Markdown