Administrar una aplicación / proyecto de Django a medida que crece (en términos de cambios en los models, aumento en las características)

Necesito su consejo sobre cómo administrar una aplicación Django a medida que crece en términos de características y models.

Por ejemplo, a medida que una aplicación crece, a menudo necesitamos agregar nuevas funciones.

Agregar nuevas características implica agregar nuevos models o agregar un nuevo campo dentro de un model.

¿Cómo harías para eso sin cerrar la aplicación web (que se ejecuta en DJango)?

¿Cómo integraría herramientas de versión como GIT en la administración de su proyecto / aplicación DJango? Mejor.

Una respuesta integral sería demasiado larga y muy subjetiva. En cambio, trataré de dirigirlo hacia algunas herramientas muy prácticas que lo ayudarán a responder algunos de los puntos planteados en su pregunta.

  1. Sur para agregar nuevos models y hacer frente a los cambios en los models existentes. South es una herramienta de migration muy útil.
  2. Fabric y / o Buildout para implementar su aplicación, cambios y todo.
  3. Pinax por permitirte escaping sin redevise la rueda, así como por nuevas ideas sobre cómo abordar tus problemas. Pinax es una colección de aplicaciones (principalmente) conectables de Django que resuelven problemas comunes.

Varios desarrolladores de Django han escrito sobre el tema de la integración de git etc. Una búsqueda en Google debería ayudarlo a encontrar los populares. Por ejemplo, aquí hay uno sobre el deployment de aplicaciones de Django escrito por Jacob Kaplan-Moss , uno de los fundadores de Django.

Aquí hay algunas cosas que aprendí de mi experiencia. No son todos específicos de Django.

  1. Defina claramente las comprobaciones de cordura cuando esté a punto de migrar datos / esquema. Verificarlos después de la migration.
  2. Mantenga un diario del proyecto. Registre todos los "events" como migraciones, cambios de versión, etc.
  3. Esté atento a los fragments de Django . Muy útil.

la idea del marco es realmente estructurar su aplicación, por lo que la aplicación debería crecer de manera sensata si sigue la estructura Modelo / Vista / Plantilla.

Lo bueno de django es que cada funcionalidad debe estar contenida en una aplicación. Si necesita una nueva funcionalidad, crea una nueva aplicación y, por lo tanto, un nuevo model. Las cosas se mantienen separadas y claras.

En cuanto a git deberías verificar esto .