Configuración de mejores prácticas para dos sitios web con diferentes hojas de estilo y templates, pero similar back end de Django

Estoy trabajando en un back-end de Django que será utilizado por dos sitios web (es decir, una bolsa de trabajo para organizaciones sin fines de lucro y una bolsa de trabajo para empresas con fines de lucro), pero no estoy seguro de cómo está mejor estructurado para hacer es fácil empujar / extraer actualizaciones en los dos sitios web.

El código de Django para los sitios web es muy similar (digamos más del 95% de superposition), pero los sitios web tienen templates ligeramente diferentes y hojas de estilo CSS separadas, con el fin de dar a cada uno un aspecto y una sensación distintos.

Mi inclinación sería configurar esto como un único proyecto de Django que almacena las hojas de estilo CSS para ambos sitios web, tiene una carpeta de templates diferente para cada website y tiene varios files de configuration (por ejemplo, base, producción_fuente, producción_nuevo). Para facilitar cualquier diferencia actual o futura en el back-end, una variable de configuration indicaría la plataforma para la que se usa el código (por ejemplo, FPROFIT = True/FPROFIT = False ) y esta variable se llama cuando sea necesario (por ejemplo, if settings.FPROFIT == True: payment_requinetworking() ). Cada vez que cambia el código de Django, las dos plataforms envían el código a GIT y lo arrastran, cada una de las cuales se ejecuta en un host virtual independiente, con sus propios entornos de testing, puesta en escena y producción.

Las dos alternativas principales que puedo ver incluyen mantener los proyectos separados, pero compartir las aplicaciones (no estoy seguro de cómo funciona esto con el control de versiones / GIT) o "bifurcar" el proyecto y actualizar la twig principal así:

Actualización del repository de GitHub bifurcado para que coincida con el último código y confirmaciones del original

Aunque mi enfoque (es decir, un proyecto, hojas de estilo y templates separadas) me parece el más directo, no me parece muy GITonic / Djangothonic / Pythonic. Me preocupa que mi elección para esta solución se base en mi falta de experiencia con el deployment de aplicaciones o el trabajo con forks en GIT y que me encontraré con problemas en el futuro. Por lo tanto, estoy ansioso por escuchar tus pensamientos y experiencias.

Me encontré con una situación similar en la que tuve que implementar dos aplicaciones web diferentes con diferentes templates pero el mismo backend en su mayor parte (algunas líneas de códigos diferentes aquí y allá).

Este es el enfoque que sigo:

  1. Repo principal
    Contiene todo el código de Django / Python. Y todo el desarrollo principal ocurre en este repository. También tiene algunas templates barebones y hojas de estilo básicas. Todos los errores también se arreglan aquí.
  2. Clone repos
    Estos repos son clones del Main repo . Cada vez que necesita implementar una nueva aplicación, solo crea un clon para ella.
    Implementa nuevas características que son específicas de una instancia particular de la aplicación web en su propio repository, por ejemplo, campos adicionales en un model, líneas adicionales en una vista o cambio de templates y hojas de estilo.

Flujo de trabajo :

  1. Crea la aplicación principal en el Main repo .
  2. Para la aplicación web N-Profit , clone el Main repo .
  3. Actualice el código N-Profit , como las hojas de estilo, y configuraciones como FPROFIT = False , etc.
  4. Implementar N-Profit .
  5. Para F-Profit , clone el Main repo .
  6. Código de actualización, como FPROFIT = True , etc.
  7. Implementa F-Profit .

Puede implementar nuevas características que son comunes a todas sus aplicaciones web en el Main repo y luego extraer los nuevos cambios desde aquí.