2010-05-19 12 views
33

Soy un novato Django, pero bastante experimentado en la programación. Tengo un conjunto de aplicaciones relacionadas que me gustaría agrupar en una subaplicación, pero no sé cómo hacer que manage.py haga esto por mí.¿Cómo creo sub-aplicaciones en Django?

Lo ideal sería que voy a terminar con una estructura como:

project/ 
    app/ 
     subapp1/ 
     subapp2/ 

He intentado manage.py startapp app.subapp1 y manage.py startapp app/subapp1
pero esto me dice que / y . son caracteres no válidos para nombres de aplicaciones.

He intentado cambiar en el directorio de la aplicación y funcionamiento ../manage.py subapp1 pero que hace supapp1 en el nivel superior. NOTA, estoy no tratando de hacer directamente una aplicación independiente. Estoy tratando de hacer todo esto desde dentro de un proyecto.

+1

¿Podría decirnos por qué está tratando de hacer esto? ¿Qué es la aplicación y qué son subapp1 y subapp2? Una aplicación django es una colección de módulos python (y, como señala Ignacio, paquetes python) que representan una aplicación web completa. No puedo entender lo que intentas hacer o por qué las personas votan por tu pregunta ... – cethegeek

+0

Mi "necesidad" puede describirse extendiendo el ejemplo de libro estándar para incluir también el género. Si imagina que cada género (ciencia ficción, comedia, drama, no ficción) tiene campos de base de datos adicionales más allá de los campos estándar del libro. Soy lo suficientemente nuevo para Python que realmente no me importa la herencia de clase (por ejemplo, la clase SFBook (Libro)), la replicación del código poco común estará bien para la versión inicial de este proyecto. Pero estoy interesado en organizar todos los géneros en un directorio común en lugar de tenerlos todos en el nivel superior del proyecto. – jamida

+1

Entonces, olvidemos la herencia por un momento. en lugar de tener una biblioteca de métodos comunes para tratar con los diferentes géneros de libros, ¿su plan es tener código replicado en múltiples directorios en "subapps"? Esa es una muy mala idea. Fenomenalmente malo, en realidad. Cada vez que tenga un cambio de código que atraviese los diferentes géneros, deberá tocar el código en varios lugares. Creo que necesitas repensar un poco tu enfoque. No hay una buena razón para intentar inventar "subapps". – cethegeek

Respuesta

39

Todavía se puede hacer esto:

cd app 
django-admin startapp subapp1 

Esto funcionará (crear la estructura básica de la aplicación), sin embargo app y subapp1 todavía será considerada como dos aplicaciones no relacionadas en el sentido de que hay que añadir los dos a INSTALLED_APPS en su configuración.

¿Este responde a su pregunta? De lo contrario, deberías contar más sobre lo que estás tratando de hacer.

+1

Así es como se hace, pero generalmente el comando se llama 'django-admin.py'. Además, en 'INSTALLED_APPS' necesitarás poner' project.app' y 'project.app.subapp1' etc. –

+0

Por alguna razón, con mi versión de django se llama' django-admin' sin '.py', pero en algunas otras computadoras, tengo que usar 'django-admin.py' ... – sebpiq

+1

@sebpiq' django-admin' se usa convenientemente en * Ubuntu * como atajo para 'django-admin.py', si ese es el estuche en tu computadora. – nerdoc

8

Django no soporta "Subaplicaciones" per se. Si desea que el código se recopile en paquetes dentro de una aplicación, simplemente créelos usted mismo. De lo contrario, solo estás pidiendo dolor.

6

Ir a la carpeta de aplicaciones. Proveedores:

python ../manage.py startapp app_name 
+0

si creaste la aplicación, ¿cómo agregarla en mi configuración? use 'app.app_name' o aún use' app_name'? – 244boy

2
django-admin.py startapp myapp /Users/jezdez/Code/myapp 

Referencia: Django Admin documentation

+0

hehe enlace roto, tal como se predijo! – ptim

+0

enlace solo además, debe poder usar la documentación en sí – dd42

6

Según Django documentation,

Si se proporciona el destino opcional, Django usará ese directorio existente en lugar de crear una nueva. Puede usar '.' Para denotar el directorio de trabajo actual.

Por ejemplo:

django-admin startapp miaplicacion/Usuarios/jezdez/Código/miaplicacion

lo tanto, puede hacerlo mediante este método:

  1. Crear sub_app1 directorio app directorio
  2. python manage.py startapp sub_app1 app/sub_app1
+1

Esta debería ser la respuesta aceptada. La forma correcta de crear una nueva aplicación con 'manage.py':' python manage.py startapp name [directory] 'donde' name' es el nombre de la aplicación y hay un directorio opcional de argumentos. De la ayuda: * Crea una estructura de directorio de la aplicación Django para el nombre de la aplicación dada en el directorio actual u opcionalmente en el directorio dado. * – cezar

Cuestiones relacionadas