2012-02-09 11 views
23

Usando django 1.4 y hemos visto que cuando usas startproject, ahora crea una carpeta dentro de tu proyecto con el mismo nombre.Django 1.4 nueva estructura de carpetas de proyectos fuerza los prefijos del proyecto?

-myproject/ 
      manage.py 
      myproject/ 
        settings.py 
        urls.py 

Documented change here

previamente para mis URL pude entrada

ROOT_URLCONF = 'urls' 

Pero eso ya no funciona. ¿Se supone que debo agregar esto al nombre del proyecto? es decir,

ROOT_URLCONF = 'myproject.urls' 

- En mi urls.py Me importar la configuración, pero ahora tengo que como prefijo from myproject import settings.

Pensé que prefijar variables con el nombre del proyecto estaba en contra de los estándares django ya que rompe la reutilizabilidad?

Respuesta

16

Sí, prefijo ROOT_URLCONF con el nombre del proyecto:

ROOT_URLCONF = 'myproject.urls' 

No debe importar la configuración directa de todos modos (ver Using settings in Python code). En su lugar, use lo siguiente, que funciona tanto para el diseño de proyecto antiguo como para el nuevo.

from django.conf import settings 
54

me acaba de añadir que obliga a utilizar prefijos cuando accces su principal myproject.urls, pero no le fuerza en ambos sentidos para sus aplicaciones. Puede optar por almacenar aplicaciones, ya sea en la carpeta de nivel superior:

myproject 
|-- manage.py 
|-- myproject 
| |-- __init__.py 
| |-- settings.py 
| |-- urls.py 
| `-- wsgi.py 
`-- polls 
    |-- __init__.py 
    |-- models.py 
    |-- tests.py 
    `-- views.py 

Este es el valor por defecto cuando se utiliza python manage.py startapp polls En este caso tendrá que utilizar from polls.models import Whatever

Alternativamente, se puede:

mkdir myproject/polls 
python manage.py startapp polls myproject/polls 

Y obtendrá esto:

myproject 
|-- manage.py 
`-- myproject 
    |-- __init__.py 
    |-- polls 
    | |-- __init__.py 
    | |-- models.py 
    | |-- tests.py 
    | `-- views.py 
    |-- settings.py 
    |-- urls.py 
    `-- wsgi.py 

En cuyo caso tendrá que from myproject.polls.models import Whatever ...

Por lo tanto, el primero es mejor para las aplicaciones que cree que podría volver a usar en otros proyectos, y este último es mejor para las aplicaciones que están estrechamente unidas otras partes de tu proyecto

+0

Gran elaboración. Gracias por esto. – Kiwi

Cuestiones relacionadas