Si te encuentras con algún detalle que te causa duda puedes dejarlo en la sección de comentarios y haremos todo lo necesario de ayudarte lo más rápido posible.
Solución:
A proyecto se refiere a toda la solicitud y todas sus partes.
Un aplicación se refiere a un submódulo del proyecto. Es autosuficiente y no está entrelazado con las otras aplicaciones del proyecto, de modo que, en teoría, podría tomarlo y colocarlo en otro proyecto sin ninguna modificación. Un aplicación típicamente tiene su propia modelos.py (que en realidad podría estar vacío). Puede considerarlo como un módulo de Python independiente. Un proyecto simple puede tener solo una aplicación.
Para tu ejemplo, el proyecto es todo el sitio web. Puede estructurarlo para que haya un aplicación para artículos, un aplicación para tablas de clasificación, y un aplicación para partidos y resultados. Si necesitan interactuar entre sí, lo hacen a través de clases públicas y métodos de acceso bien documentados.
Lo principal a tener en cuenta es este nivel de interdependencia entre el aplicaciones. En la práctica es todo uno proyecto, por lo que no tiene sentido exagerar, pero tenga en cuenta cuán codependientes son dos aplicaciones. Si encuentra que una aplicación resuelve dos problemas, divídalos en dos aplicaciones. Si encuentra que dos aplicaciones están tan entrelazadas que nunca podría reutilizar una sin la otra, combínelas en una sola aplicación.
Entendamos Project y App en Django con este ejemplo realista:
Digamos que está construyendo un sitio de compras en línea (sitio de comercio electrónico) en Django:
Proyecto:
Es simplemente el nombre de su sitio web. Django creará un paquete de python y le dará el nombre que haya proporcionado. digamos que lo nombramos mi_sitio_de_compras.
Puedes crear un proyecto en Django con este comando
python manage.py startproject my_shopping_site
Esto creará my_shopping_site
directorio en su directorio de trabajo y la estructura se verá así:
my_shopping_site/
manage.py
my_shopping_site/ # package
__init__.py # indication of package
settings.py # module 1
urls.py # module 2
wsgi.py # module 3
aplicaciones:
Son esos pequeños componentes que juntos conforman su proyecto. Son las características de su proyecto. En nuestro caso (sitio de compras) sería:
-
Carro :- Que tendría una lógica para los artículos seleccionados por el usuario para la compra.
-
Productos :- Lo que tendría una lógica para los productos que vende el sitio.
-
Perfil:- Que tendría una lógica para la información del usuario.
----------------------------------------------------------- my_shopping_site Products Profile Cart -----------------------------------------------------------
y puedes crear estas aplicaciones con estos comandos:
python manage.py startapp cart
python manage.py startapp products
python manage.py startapp profile
La estructura quedaría así:
my_shopping_site/ # project name
manage.py
products/ # app 1
cart/ # app 2
profile/ # app 3
my_shopping_site/
cada aplicación se enfoca en una sola pieza lógica de su proyecto.
Idealmente, tu proyecto debe estar compuesto por aplicaciones. Es por eso que cuando usa la línea de comando, crea un proyecto y luego agrega aplicaciones a ese proyecto.
Apps, tiene como objetivo traer modularidad a tu proyecto. Por ejemplo, si construyes un articles app
, idealmentepuede usarlo en su proyecto de noticias deportivas y reutilizarlo en un nuevo proyecto que lo requiera con una modificación mínima o nula en su settings
— digamos un proyecto de blog, por ejemplo.
Las aplicaciones son piezas de software destinadas a ser reutilizadas. Su proyecto representa solo sus necesidades muy específicas.
Eche un vistazo a la estructura del proyecto Django. Puede darle una idea de las mejores prácticas para organizar su proyecto Django.
También hay varias publicaciones de blog que se pueden buscar en Google que abordan este tema:
- http://timmyomahony.com/blog/updated-django-project-structure-or-folder-layout/
- http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/
Comentarios y calificaciones
Puedes añadir valor a nuestra información contribuyendo tu experiencia en las anotaciones.