mcpField
D
django

django

github.com/microsoft开发2.5k47 次安装2 天前更新
代码仓库

关于 django

面向开发 Django 项目的开发者,适用于模型、视图、路由、表单、管理后台和测试等工作。提供项目结构、ORM 使用、请求处理及测试实践建议。

主要功能

  1. 01Django 应用结构指导
  2. 02模型与 ORM 查询实践
  3. 03视图和 URL 处理模式
  4. 04身份验证与查询优化
  5. 05pytest-django 测试指导

适用场景

  1. 01按领域概念组织应用
  2. 02构建 CRUD 视图并处理路由
  3. 03减少 N+1 数据库查询
  4. 04测试使用数据库的视图

安装

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

$npx skills add https://github.com/microsoft/debugpy --skill django

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

详细介绍

技能:Django

Django Web 开发最佳实践,涵盖模型、视图、模板和测试。

适用场景

在处理 Django 项目时使用此技能,包括模型、视图、URL 路由、模板、表单、管理后台和管理命令。

项目结构

  • 遵循标准的 Django 应用布局:models.py、views.py、urls.py、admin.py、tests.py、forms.py。
  • 让每个应用专注于单一领域概念;避免创建包含无关模型的“万能应用”。
  • 使用 settings/base.py、settings/dev.py、settings/prod.py 管理不同环境的配置。

模型

  • 始终为模型定义 __str__,以便在管理后台中查看并便于调试。
  • 谨慎使用 Meta.ordering——它会为每个查询添加 ORDER BY。优先在查询集上显式调用 .order_by()。
  • 对出现在 filter() / order_by() 中的字段使用数据库索引(db_index=True、Meta.indexes)。
  • 对受限字段,优先使用带 choices 的 CharField(或 TextChoices / IntegerChoices),而不是裸字符串。
  • 对复杂查询使用 F() 表达式和 Q() 对象,以避免竞态条件并提高可读性。

视图

  • 对 CRUD 操作优先使用基于类的视图(CBV);一次性逻辑优先使用基于函数的视图。
  • 始终显式设置 queryset 或重写 get_queryset()——不要依赖可变的类级状态。
  • 使用 select_related() 和 prefetch_related() 避免 N+1 查询问题。
  • 设置 LOGIN_URL,并一致地使用 @login_required / LoginRequiredMixin。

测试

  • 使用 pytest-django,并通过 @pytest.mark.django_db 访问数据库。
  • 仅在需要显式控制事务时使用 TestCase 或 TransactionTestCase;其他情况使用 pytest 固件。
  • 使用 RequestFactory 或 Client 测试视图,无需启动服务器。
  • 在测试中使用 baker.make()(model-bakery)或工厂,而不是手动构造模型。

常见问题

  • 绝不要在异步视图中执行阻塞式 I/O,除非使用 sync_to_async 包装。
  • 避免在 settings.py 或 urls.py 的模块级别导入模型(可能导致循环导入)。
  • 绝不要在 settings.py 中存储机密信息——请使用环境变量。
  • 除非 ORM 确实无法表达查询,否则避免使用原始 SQL。

评论

支持 Markdown