Estoy en un equipo que desarrolla un portal universitario basado en la web, que se basará en Django. Todavía estamos en las etapas de exploración, y estoy tratando de encontrar la mejor manera de establecer el entorno de proyecto/desarrollo.Gran diseño de la aplicación Django
Mi idea inicial es desarrollar el sistema como una "aplicación" Django, que contiene sub-aplicaciones para separar las diferentes partes del sistema. La razón por la que pretendo hacer estas aplicaciones "secundarias" es que no tendrían ningún uso fuera de la aplicación principal en absoluto, por lo que no tendría sentido distribuirlas por separado. Creemos que el portal se instalará en múltiples ubicaciones (en diferentes universidades, por ejemplo), por lo que la aplicación principal se puede incluir en varios proyectos de Django para instalarla. Por lo tanto, tenemos un repositorio diferente para cada proyecto de ubicación, que en realidad es solo un archivo settings.py
que define las aplicaciones del portal instaladas, y un urls.py
que enruta las direcciones URL a él.
Empecé a escribir algunos códigos iniciales, sin embargo, y me encontré con un problema. Parte del código que maneja la autenticación de usuario y los perfiles parece no tener un hogar. No pertenece conceptualmente a la aplicación del portal, ya que no se relaciona con la funcionalidad del portal. También, sin embargo, no puede ir en el repositorio del proyecto, ya que entonces estaría duplicando el código sobre el repositorio de cada ubicación. Si descubriera un error en este código, por ejemplo, tendría que replicar manualmente el arreglo sobre todos los archivos de proyecto de la ubicación.
Mi idea para una solución es hacer que todos los repos proyectos sean una bifurcación de un proyecto de ubicación "maestro", de modo que pueda extraer cualquier cambio de ese maestro. Creo que esto es complicado, y significa que tengo un repositorio más para cuidar.
Estoy buscando una mejor manera de lograr este proyecto. ¿Alguien puede recomendar una solución o un ejemplo similar que pueda ver? El problema parece ser que estoy desarrollando un proyecto Django en lugar de solo una aplicación Django .
Como mencioné en la respuesta de @Jack: Estoy desarrollando lo que es esencialmente un proyecto Django *, y no solo una aplicación Django *. Por lo tanto, necesito organizar mi proyecto en solo un repositorio, y usar algo como el truco local_settings.py para alterar cosas como el título del sitio para diferentes sitios donde está instalada la aplicación. –
(un poco tarde, pero ...) A menos que estés usando muchas cosas específicas de django (administrador, aplicaciones de terceros, etc.) me quedaría con un nivel más bajo, como Flask. De esa forma puedes tener un control total sobre la forma en que haces las cosas.Acabo de dejar a Django en un proyecto más grande en el que estoy trabajando. Todo lo que hago debe hacerse de manera totalmente personalizada después de toparse con un problema tras otro tratando de hacer las cosas a la manera de Django. – orokusaki