with tutorial the framework español applications python django

python - tutorial - ¿Cuándo crear una nueva aplicación(con startapp) en Django?



the django project (6)

Aquí está la presentación actualizada el 6 de septiembre de 2008.

DjangoCon 2008: Aplicaciones reutilizables a las 7:53

Slide: Reusable_apps.pdf

Tomado de la diapositiva

¿Debería ser esta su propia aplicación?

  • ¿Está completamente relacionado con el enfoque de la aplicación?
  • ¿Es ortogonal a lo que sea que esté haciendo?
  • ¿Necesitaré funcionalidad similar en otros sitios?

Si alguno de ellos es "Sí"? Entonces es mejor dividirlo en una aplicación separada.

He buscado esto en Google, pero todavía tengo problemas para relacionarme con lo que Django define como "aplicaciones".

¿Debo crear una nueva aplicación para cada pieza de funcionalidad en un sitio, aunque use modelos del proyecto principal?

¿Ustedes tienen una buena regla de cuándo dividir una nueva aplicación y cuándo mantener la funcionalidad junto con el "proyecto principal" u otras aplicaciones?


James Bennett tiene un maravilloso conjunto de diapositivas sobre cómo organizar aplicaciones reutilizables en Django.


La regla que sigo es que debería ser una aplicación nueva si quiero reutilizar la funcionalidad en un proyecto diferente.

Si necesita una comprensión profunda de los modelos en su proyecto, probablemente sea más cohesivo adherirse a los modelos.


Prefiero pensar en las aplicaciones de Django como módulos o componentes reutilizables que como "aplicaciones".

Esto me ayuda a encapsular y desacoplar ciertas características entre sí, mejorando la reutilización si decido compartir una "aplicación" particular con la comunidad en general y la capacidad de mantenimiento.

Mi enfoque general es agrupar funciones o conjuntos de características específicos en "aplicaciones" como si fuera a lanzarlas públicamente. La parte difícil aquí es averiguar qué tan grande es cada cubo.

Un buen truco que uso es imaginar cómo se usarían mis aplicaciones si se publicaran públicamente. Esto a menudo me anima a reducir los cubos y definir más claramente su "propósito".


Tiendo a crear nuevas aplicaciones para cada conjunto de modelos lógicamente separado. p.ej:

  • Perfiles de usuario
  • Publicaciones del foro
  • Publicaciones de blog

Una ''aplicación'' podría ser muchas cosas diferentes, todo se reduce al gusto. Por ejemplo, digamos que estás construyendo un blog. Su aplicación podría ser todo el blog, o podría tener una aplicación ''admin'', una aplicación ''site'' para todas las vistas públicas, una aplicación ''rss'', una aplicación ''services'' para que los desarrolladores puedan interactuar con el blog en su maneras propias, etc.

Personalmente, convertiría el blog en la aplicación, y explico la funcionalidad dentro de él. El blog podría ser reutilizado con bastante facilidad en otros sitios web.

Lo bueno de Django es que reconocerá cualquier archivo models.py dentro de cualquier nivel de su árbol de directorios como un archivo que contenga modelos de Django. Por lo tanto, dividir su funcionalidad en ''subaplicaciones'' más pequeñas dentro de una ''aplicación'' no hará más difícil.