django

Mejores prácticas para el desarrollo web con Django, incluyendo modelos, vistas, plantillas y pruebas.

npx skills add https://github.com/microsoft/debugpy --skill django

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.

Más skills de microsoft

oss-growth
microsoft
Persona de growth hacker de OSS
official
winapp-ui-automation
microsoft
Inspeccionar e interactuar con las interfaces de aplicaciones de Windows en ejecución desde la línea de comandos usando UI Automation (UIA). Úselo cuando un agente de IA o desarrollador necesite inspeccionar una interfaz de usuario...
official
accessibility-aria-expert
microsoft
Detecta y corrige problemas de accesibilidad en vistas web de React/Fluent UI. Úsalo al revisar código para compatibilidad con lectores de pantalla, corregir etiquetas ARIA, garantizar…
official
generate-canvas-app
microsoft
[OBSOLETO — usa canvas-app en su lugar] Genera una aplicación completa de Power Apps canvas.
official
github-issue-creator
microsoft
Convierte notas en bruto, registros de errores, dictados de voz o capturas de pantalla en informes de incidencias nítidos en markdown estilo GitHub. Úsalo cuando el usuario pegue información de errores, fallos…
official
python-package-management
microsoft
Utiliza uv para la gestión de dependencias y poethepoet para la automatización de tareas.
official
runtime-validation
microsoft
Validación en tiempo de ejecución para aplicaciones migradas: cubre la estrategia de pruebas (fase de planificación) y la ejecución de pruebas (fase de validación): verificación de inicio,…
official
azure-postgres-ts
microsoft
Conéctate a Azure Database for PostgreSQL Flexible Server usando el paquete pg (node-postgres) con soporte para autenticación por contraseña y Microsoft Entra ID (sin contraseña).
official