python - framework - install django
Sub-aplicaciones de Django y estructura del módulo. (1)
Estoy desarrollando una aplicación Django, que es un sistema grande que requiere múltiples sub-aplicaciones para mantener las cosas en orden. Por lo tanto, tengo un directorio de nivel superior que es una aplicación de Django (ya que tiene un archivo models.py
vacío) y varios subdirectorios, que también son aplicaciones en sí mismos.
La razón por la que he presentado mi solicitud de esta manera es porque las subaplicaciones están separadas, pero nunca se usarían por su cuenta, fuera de la aplicación principal. Por lo tanto, no tiene sentido distribuirlos por separado.
Al instalar mi aplicación, el archivo de configuración debe incluir algo como esto:
INSTALLED_APPS = (
...
''myapp'',
''myapp.subapp1'',
''myapp.subapp2'',
...
)
... lo que obviamente es subóptimo. Esto también tiene el resultado ligeramente desagradable de requerir que todas las subapp1
sean referidas por su nombre "interno" (es decir, subapp2
, subapp2
, etc.). Por ejemplo, si quiero restablecer las tablas de la base de datos para subapp1, tengo que escribir:
python manage.py reset subapp1
Esto es molesto, especialmente porque tengo una sub-aplicación llamada core
, que probablemente entre en conflicto con el nombre de otra aplicación cuando mi aplicación esté instalada en el proyecto de un usuario.
¿Estoy haciendo esto de forma completamente equivocada, o existe la posibilidad de obligar a estas aplicaciones "internas" a que se mencionen por su nombre completo?
Lo estás haciendo de la manera correcta, ya que el mismo django lo hace de esa manera. La aplicación de administración, por ejemplo, está registrada en INSTALLED_APPS
como django.contrib.admin
, pero para restablecerla debe usar manage.py reset admin
y, de hecho, manage.py reset django.contrib.admin
no funciona .
Podría ser considerado como un error en django ...
Sin embargo , no debe preocuparse por los conflictos de nombres, ya que siempre debe ejecutar django dentro de un entorno virtualenv
, aislado del resto de la instalación de python. Esta es una solución inmensamente más poderosa y flexible que ejecutar django en una instalación Python normal. Más información, por ejemplo, aquí: http://mathematism.com/2009/jul/30/presentation-pip-and-virtualenv/