¿Cuál es la mejor manera de organizar un gran proyecto de Django?

django-skel: la documentación de django-skel 1.4 es una buena base o, si ya tiene un proyecto existente, un buen conjunto de pautas sobre cómo organizar un gran proyecto de django.

En resumen, te da todo esto

  • Migraciones de bases de datos a través del sur.
  • Gestión de archivos estáticos a través de django-compressor.
  • Tarea en cola a través de Apio.
  • Utilidades auxiliares para trabajar en la línea de comandos, a través de Fabric.
  • Generación de documentación de fantasía a través de Sphinx.
  • Impresionante depuración y análisis local a través de django-debug-toolbar.
  • Integración de Amazon S3 (para publicar activos estáticos: css, js, imágenes, etc.) a través de django-storages.
  • Compresión CSS (para entornos de producción) a través de cssmin.
  • Compresión JS (para entornos de producción) a través de jsmin.
  • Soporte de caché de Memcache a través de django-heroku-memcacheify.
  • Soporte de PostgreSQL a través de django-heroku-postgresify.
  • Un servidor WSGI increíblemente rápido para atender el tráfico de producción a través de gunicorn y gevent.
  • Supervisión de rendimiento de aplicaciones de producción y estadísticas de uso a través de newrelic.
  • Soporte integrado para implementaciones de producción en la plataforma de Heroku.

Si su proyecto se está moviendo más allá de un punto en el que algunas de las capacidades de django no funcionan muy bien, puede considerar reemplazar partes del mismo. P.ej. Django ORM se puede reemplazar con SQLAlchemy o si está creando algo que tiene una funcionalidad común para varios otros sitios, eche un vistazo a Pinax

Soy fanático de mantener las bases de código que escalan mientras son “comprobables”.

Mi enfoque de un proyecto generalmente tiene los siguientes principios:

* Mantenga el código “comprobable” a toda costa. Esto necesitará perder el acoplamiento. Separe las partes lógicamente diferentes del proyecto. Siempre puede usar señales para vincular las partes desacopladas.
* Use una aplicación de “proyecto”, que contiene las vistas / modelos inevitables que necesitan hablar con los modelos de múltiples aplicaciones.
* Personalmente, mi preferencia es plana sobre anidada. Un archivo en el programa python es un módulo (a diferencia de Java, donde un archivo es una clase).
* Organizar modelos es realmente un problema de modelado de bases de datos. Ponga el conjunto de modelos relacionados dentro de cada aplicación. Está bien tener un esquema de base de datos que no esté perfectamente normalizado, siempre que ayude en el rendimiento y el aislamiento de las partes no relacionadas.

Organizar un proyecto django tiene múltiples elementos.
1. Como dices, uno es aplicaciones. Las aplicaciones tienen más que ver con la lógica empresarial sobre el proyecto y también con los controladores. Aquí es donde residirán los elementos esenciales de la funcionalidad de la aplicación.
Para más, debe mirar su archivo de configuración. Puede encontrar algunas de las siguientes cosas útiles a medida que su proyecto se hace más grande.

Middlewares – De los documentos “Es un sistema de” plugin “ligero y de bajo nivel para alterar globalmente la entrada o salida de Django”. Por lo tanto, probablemente podría usar esto para hacer cosas basadas en el agente de usuario o muchas otras cosas

Procesador de contexto: el procesador de contexto se trata de cómo comparte datos y funciona con plantillas. El procesador de contexto i18n es una buena manera de entender cómo se ha podido poner una internacionalización de manera más modular

Etiquetas de plantilla: cualquier información con la que deba procesar una cantidad considerable y que tenga que ver con muchas plantillas. Puedes ponerlo como una etiqueta de plantilla.

Mantenimiento del proyecto: luego puede usar el sur, la tela y el apio para mantener y extender un proyecto

Por lo tanto, si bien las aplicaciones son una buena forma de organizar la lógica empresarial. Hay muchos criterios en los que puedes romper un proyecto de django. Lo importante es recordar DRY como una filosofía guía.

Usamos una plantilla de proyecto muy mínima. Está disponible en GitHub django-project-template.

El objetivo es ser lo más minimalista posible para permitir que cada proyecto evolucione sin forzar demasiada estructura y, sin embargo, tener una estructura básica común en todos los proyectos, por lo que cuando los desarrolladores cambian de proyecto, todavía saben cómo moverse.

Ver:

¿Cuáles son algunas de las mejores prácticas para el desarrollo de Django?

¿Cómo organizas el código en tu proyecto Django?