django
- Repo stars 2,412
- License NOASSERTION
- Author repo 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.
- Fluxly category
- Other
- Author-declared agents
- No explicit declaration found; this is not inferred or tested compatibility
- Static check
- 94 / 100 · heuristic scan, not runtime safety proof
- Author / version / license
- @microsoft · NOASSERTION
- Fluxly token estimate
- Lean
- Fluxly setup estimate
- Plug-and-play
- External API key
- No requirement detected
- Detected OS requirements
- Unspecified
- Runtime requirements
- Unspecified
- Detected file/system behavior
-
- Read-only
- Write / modify
- Env read
- Detected network behavior
- Local-only
- Install commands
- None (reference only)
Profile is derived at build time from SKILL.md and install vectors. Subject to drift from author intent.
Heads up: 未限定 allowed-tools,默认拥有全部工具权限。
The current SKILL.md does not define a fixed output example. 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.
… Author text anchors workflow facts; Fluxly only indexes current sections, terms, files, and commands.
sections -> When to Use → Project Structure → Models → Views → Testing → Pitfalls
terms -> 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.
files/cmd -> models.py · views.py · urls.py · admin.py · tests.py · forms.py · settings/base.py · settings/dev.py
body sha256 -> 14ff71009987
Decide Fit First
Design Intent
How To Use It
Boundaries And Review