django
Installation
SKILL.md
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.