2009-02-09 37 views
31

¿Alguien podría recomendar una buena guía/tutorial/artículo con consejos/pautas sobre cómo organizar y particionar un gran proyecto de Django?Guía para organizar grandes proyectos de Django

Estoy buscando consejos sobre qué hacer cuando necesita comenzar a factorizar los archivos únicos iniciales (models.py, urls.py, views.py) y trabajar con más de unas pocas docenas de entidades.

Respuesta

38

Cada "aplicación" debe ser pequeña: una única entidad reutilizable más algunas tablas asociadas. Tenemos alrededor de 5 más/menos 2 tablas por modelo de aplicación. La mayoría de nuestras aplicaciones de media docena son más pequeñas que 5 tablas. Uno tiene cero tablas en el modelo.

Cada aplicación debe diseñarse para ser un concepto reutilizable. En nuestro caso, cada aplicación es una parte del sitio general; las aplicaciones podrían eliminarse y reemplazarse por separado.

De hecho, esa es nuestra estrategia. A medida que nuestros requisitos se amplían y maduran, podemos eliminar y reemplazar aplicaciones de manera independiente.

Está bien que las aplicaciones dependan entre sí. Sin embargo, la dependencia debe limitarse a las cosas obvias como "modelos" y "formas". Además, las aplicaciones pueden depender de los nombres en las URL de los demás. En consecuencia, sus URL nombradas deben tener un formulario como "vista de aplicación" para que la función reverse o la etiqueta {% url %} puedan encontrarlas correctamente.

Cada aplicación debe contener es comandos propios lotes (por lo general a través de un comando formal que puede ser encontrado por el script django-admin.

Finalmente, todo lo que es más compleja que un simple modelo o la Forma que es compartida probablemente no pertenece a cualquiera de las aplicaciones, pero debe ser una biblioteca compartida por separado. Por ejemplo, usamos XLRD, pero envolvemos partes de nuestra clase para que se parezca más al módulo csv incorporado. Este envoltorio para XLRD no es una parte adecuada de cualquier aplicación, es un módulo aparte, fuera de las aplicaciones de Django.

10

Me ha resultado útil echarle un vistazo en grandes proyectos de código abierto de Django y tomar nota de cómo lo hace ese proyecto. El sitio de Django tiene una buena lista de proyectos de código abierto:

http://code.djangoproject.com/wiki/DjangoResources#Open-SourceDjangoprojects

Como lo hace Google (aunque la mayoría de estos son las etiquetas y para plantillas más pequeñas Middleware:

http://code.google.com/hosting/search?q=label:django

Por supuesto , solo porque un proyecto lo hace de una manera no significa que ese camino es el correcto (o el camino equivocado). Algunos de esos proyectos son más exitosos que otros.

Al final, el o Una forma única de aprender realmente lo que funciona y lo que no funciona es probarlo usted mismo. Todos los consejos y sugerencias en el mundo no te ayudarán a menos que lo pruebes tú mismo, pero pueden ayudarte a comenzar en la dirección correcta.

+0

Estoy de acuerdo ... Las cosas que aprendí al trabajar en pinax y satchmo son invaluables – Jiaaro

Cuestiones relacionadas