Django 技能排查
- 作者仓库星标 2,412
- 许可证 NOASSERTION
- 作者仓库 debugpy
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.pyfor environment-specific configuration.
Models
- Always define
__str__on models for admin and debugging readability. - Use
Meta.orderingsparingly — it addsORDER BYto every query. Prefer explicit.order_by()on querysets. - Use database indexes (
db_index=True,Meta.indexes) for fields that appear infilter()/order_by(). - Prefer
CharFieldwithchoices(orTextChoices/IntegerChoices) over bare strings for constrained fields. - Use
F()expressions andQ()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
querysetor overrideget_queryset()— never rely on mutable class-level state. - Use
select_related()andprefetch_related()to avoid N+1 query problems. - Set
LOGIN_URLand use@login_required/LoginRequiredMixinconsistently.
Testing
- Use
pytest-djangowith@pytest.mark.django_dbfor database access. - Prefer
TestCaseorTransactionTestCaseonly when explicit transaction control is needed; otherwise use pytest fixtures. - Use
RequestFactoryorClientto 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.pyorurls.py(circular imports). - Never store secrets in
settings.py— use environment variables. - Avoid raw SQL unless the ORM genuinely cannot express the query.
- 流狐分类
- 通用
- 作者声明 Agent
- 未找到明确声明;不据此推断已兼容或已测试
- 静态检查
- 94 / 100 · 启发式扫描,不代表运行安全
- 作者 / 版本 / 许可
- @microsoft · NOASSERTION
- 流狐 Token 估算
- 低消耗
- 流狐接入估算
- 即装即用
- 是否需要外部 API Key
- 未发现要求
- 检测到的系统要求
- 未声明
- 底层运行要求
- 未声明
- 检测到的文件与系统行为
-
- 只读
- 允许写入 / 修改
- 读取环境变量
- 检测到的网络行为
- 仅限本地
- 安装命令数
- 无(仅作为资料)
档案由构建时根据 SKILL.md 与安装命令自动衍生,可能与作者实际意图存在差异。
需要注意: 未限定 allowed-tools,默认拥有全部工具权限。
作者没有在当前 SKILL.md 中定义固定输出样例。 Apply this skill when working with Django projects — models, views, URL routing, templates, forms, admin, and management commands.
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…
Always define str on models for admin and debugging readability. Use Meta.ordering sparingly — it adds ORDER BY to every query. Prefer explicit .orderby() on querysets. Use database indexes (dbindex=True, Meta.indexes) for fields that appear in filter() /…
Prefer class-based views (CBVs) for CRUD; prefer function-based views for one-off logic. Always explicitly set queryset or override getqueryset() — never rely on mutable class-level state. Use selectrelated() and prefetchrelated() to avoid N+1 query problems.
Use pytest-django with @pytest.mark.djangodb 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.
Never do blocking I/O in async views without wrapping in synctoasync. Avoid importing models at module level in settings.py or urls.py (circular imports). Never store secrets in settings.py — use environment variables.
# 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.
… 作者原文负责流程事实;流狐只索引当前章节、要点、文件与命令。
章节 -> When to Use → Project Structure → Models → Views → Testing → Pitfalls
要点 -> Best practices for Django web development including models, views, templates, and testing. · Apply this skill when working with Django projects — models, views, URL routing, templates, forms, admin, and management commands. · - Follow the standard Django app layout: models.py, views.py, urls.py, admin.py, tests.py, forms.py. · - Always define str on models for admin and debugging readability. · - Prefer class-based views (CBVs) for CRUD; prefer function-based views for one-off logic. · - Use pytest-django with @pytest.mark.djangodb for database access. · - Never do blocking I/O in async views without wrapping in synctoasync.
文件/命令 -> models.py · views.py · urls.py · admin.py · tests.py · forms.py · settings/base.py · settings/dev.py
内容 SHA-256 -> 14ff71009987
原文结构
适用与边界
原文中的明确线索
models.py、views.py、urls.py、admin.py、tests.py、forms.py、settings/base.py、settings/dev.py