Django Development Patterns 是一套针对生产级 Django 应用的架构模式技能资料,目标是帮助开发者构建可扩展、可维护的 Django 项目。以下按其内容结构整理。
一、用途与激活时机
该技能适用于以下情况:构建 Django Web 应用、设计 Django REST Framework(DRF)API、使用 Django ORM 与模型、搭建 Django 项目结构,以及实现缓存、信号、中间件等。
二、项目结构
资料推荐一种布局:顶层为 myproject/,其中 config/ 目录包含 init.py、settings/(内含 init.py、base.py、development.py、production.py、test.py)、urls.py、wsgi.py、asgi.py;顶层还有 manage.py 与 apps/ 目录,apps/ 下按业务划分如 users/、products/ 等应用,每个应用内含 models.py、views.py、serializers.py、urls.py、permissions.py、filters.py、services.py 与 tests/ 目录。
三、拆分 Settings 模式
资料给出 base.py、development.py、production.py 三个设置文件的示例代码。base.py 使用 pathlib 定义 BASE_DIR,通过 env() 读取密钥等环境变量,列出 INSTALLED_APPS(含 Django 内置应用、rest_framework、rest_framework.authtoken、corsheaders 及本地应用)、MIDDLEWARE(含 SecurityMiddleware、WhiteNoiseMiddleware、SessionMiddleware、CorsMiddleware、CommonMiddleware、CsrfViewMiddleware、AuthenticationMiddleware、MessageMiddleware、XFrameOptionsMiddleware)、ROOT_URLCONF、WSGI_APPLICATION,以及使用 PostgreSQL 后端的 DATABASES 配置。development.py 从 base 导入,开启 DEBUG,设置 ALLOWED_HOSTS、切换开发数据库、追加 debug_toolbar 相关配置,并使用控制台邮件后端。production.py 从 base 导入,关闭 DEBUG,从环境变量读取 ALLOWED_HOSTS,启用 SECURE_SSL_REDIRECT、SESSION_COOKIE_SECURE、CSRF_COOKIE_SECURE、SECURE_HSTS_SECONDS、SECURE_HSTS_INCLUDE_SUBDOMAINS、SECURE_HSTS_PRELOAD,并配置 LOGGING 到文件。
四、模型设计模式
模型最佳实践示例包含:继承 AbstractUser 的自定义 User 模型(自定义 email 唯一字段、phone、birth_date,设置 USERNAME_FIELD 与 REQUIRED_FIELDS,Meta 中指定 db_table、verbose_name、ordering,并实现 str 与 get_full_name);Product 模型示例展示 CharField、SlugField、TextField、DecimalField(带 MinValueValidator)、PositiveIntegerField、BooleanField、ForeignKey、ManyToManyField、created_at/updated_at 等字段配置,Meta 中定义 db_table、ordering、indexes(对 slug、-created_at、category+is_active 建索引)与 constraints(价格非负的 CheckConstraint),并在 save 中自动生成 slug。
五、QuerySet 与 Manager
资料演示自定义 QuerySet(ProductQuerySet),提供 active()、with_category()(select_related 避免 N+1)、with_tags()(prefetch_related)、in_stock()、search() 等方法,并通过 as_manager() 挂载到模型。Manager 示例(ProductManager)提供 get_or_none()、create_with_tags()、bulk_update_stock() 等方法。
六、DRF 序列化器模式
示例包括 ProductSerializer(含只读字段、SerializerMethodField 计算折扣价、字段级 validate_price)、ProductCreateSerializer(对象级 validate 多字段校验)、UserRegistrationSerializer(密码 write_only、密码确认校验、create 中哈希密码)。
七、ViewSet 与自定义动作
ProductViewSet 示例继承 ModelViewSet,配置 queryset(select_related 与 prefetch_related)、permission_classes、filter_backends(DjangoFilterBackend、SearchFilter、OrderingFilter)、filterset_class、search_fields、ordering_fields 与 ordering;按 action 返回不同序列化器;perform_create 注入用户;并用 @action 定义 featured、purchase、my_products 等自定义动作。资料另给出基于 @api_view 与 @permission_classes 的函数视图示例(add_to_cart)。
八、Service 层模式
OrderService 示例使用 @transaction.atomic 与 @staticmethod 实现 create_order(从购物车创建订单与订单项、清空购物车)、process_payment(调用支付网关、更新订单状态、发送确认邮件)与 send_confirmation_email。
九、缓存策略
资料给出四种缓存方式示例:视图级缓存(cache_page 装饰器配合 method_decorator,示例为 15 分钟);模板片段缓存({% cache 500 sidebar %});底层缓存 API(cache.get / cache.set 配合 cache_key 与超时);以及 QuerySet 缓存(get_popular_categories 示例)。该部分内容在提供资料末尾出现截断。
十、适用场景与限制
适用场景包括构建 Django Web 应用、设计 DRF API、组织项目结构、编写模型与 ORM 查询、实现缓存与中间件、封装 Service 层业务逻辑。资料未提供该技能的安装方式、运行命令、收费或价格信息、平台限制与效果说明,这些内容暂未提供。