关于 django
面向开发 Django 项目的开发者,适用于模型、视图、路由、表单、管理后台和测试等工作。提供项目结构、ORM 使用、请求处理及测试实践建议。
主要功能
- 01Django 应用结构指导
- 02模型与 ORM 查询实践
- 03视图和 URL 处理模式
- 04身份验证与查询优化
- 05pytest-django 测试指导
适用场景
- 01按领域概念组织应用
- 02构建 CRUD 视图并处理路由
- 03减少 N+1 数据库查询
- 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