django

GitHub

提供Django Web开发最佳实践,涵盖模型、视图、模板及测试。指导项目结构、ORM使用、CBV/FBV选择、查询优化及pytest测试方法,避免常见陷阱如N+1查询和循环导入。

.claude/skills/django/SKILL.md microsoft/debugpy

触发场景

Django项目开发 编写Django模型或视图 配置Django测试 解决Django性能问题

安装

npx skills add microsoft/debugpy --skill django -g -y
更多选项

非标准路径

npx skills add https://github.com/microsoft/debugpy/tree/main/.claude/skills/django -g -y

不安装直接使用

npx skills use microsoft/debugpy@django

指定 Agent (Claude Code)

npx skills add microsoft/debugpy --skill django -a claude-code -g -y

安装 repo 全部 skill

npx skills add microsoft/debugpy --all -g -y

预览 repo 内 skill

npx skills add microsoft/debugpy --list

SKILL.md

Frontmatter
{
    "name": "django",
    "description": "Best practices for Django web development including models, views, templates, and testing."
}

Skill: Django

Best practices for Django web development including models, views, templates, and testing.

When to Use

Apply this skill when working with Django projects — models, views, URL routing, templates, forms, admin, and management commands.

Project Structure

  • Follow the standard Django app layout: models.py, views.py, urls.py, admin.py, tests.py, forms.py.
  • Keep each app focused on a single domain concept; avoid "god apps" with unrelated models.
  • Use settings/base.py, settings/dev.py, settings/prod.py for environment-specific configuration.

Models

  • Always define __str__ on models for admin and debugging readability.
  • Use Meta.ordering sparingly — it adds ORDER BY to every query. Prefer explicit .order_by() on querysets.
  • Use database indexes (db_index=True, Meta.indexes) for fields that appear in filter() / order_by().
  • Prefer CharField with choices (or TextChoices / IntegerChoices) over bare strings for constrained fields.
  • Use F() expressions and Q() objects for complex queries to avoid race conditions and improve readability.

Views

  • Prefer class-based views (CBVs) for CRUD; prefer function-based views for one-off logic.
  • Always explicitly set queryset or override get_queryset() — never rely on mutable class-level state.
  • Use select_related() and prefetch_related() to avoid N+1 query problems.
  • Set LOGIN_URL and use @login_required / LoginRequiredMixin consistently.

Testing

  • Use pytest-django with @pytest.mark.django_db for database access.
  • Prefer TestCase or TransactionTestCase only when explicit transaction control is needed; otherwise use pytest fixtures.
  • Use RequestFactory or Client to test views without starting a server.
  • Use baker.make() (model-bakery) or factories instead of manual model construction in tests.

Pitfalls

  • Never do blocking I/O in async views without wrapping in sync_to_async.
  • Avoid importing models at module level in settings.py or urls.py (circular imports).
  • Never store secrets in settings.py — use environment variables.
  • Avoid raw SQL unless the ORM genuinely cannot express the query.

版本历史

  • e5743d3 当前 2026-08-20 17:01

同 Skill 集合

.claude/skills/click/SKILL.md
.claude/skills/flask/SKILL.md
.claude/skills/jinja2/SKILL.md
.claude/skills/numpy/SKILL.md
.claude/skills/pytest/SKILL.md
.claude/skills/requests/SKILL.md

元信息

文件数
0
版本
e5743d3
Hash
fd610bb0
收录时间
2026-08-20 17:01

首页 - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-28 23:45
浙ICP备14020137号-1 $访客地图$