2012-02-09 13 views
23

django 1.4 kullanımı ve startproject'u kullandığınızda, artık projenizde aynı ada sahip bir klasör oluşturduğunu gördünüz. Daha önce bu artık çalışmıyor ben girişiDjango 1.4 yeni proje klasör yapısı proje öneklerini zorlar mı?

ROOT_URLCONF = 'urls' 

olabilir ama benim URL'ler için

Documented change here

-myproject/ 
      manage.py 
      myproject/ 
        settings.py 
        urls.py 
. Şimdi bunun proje ismiyle ön eklenmesi gerekiyor mu? yani

ROOT_URLCONF = 'myproject.urls' 

- Benim urls.py yılında Ben ayarlarını içe ediyorum ama şimdi from myproject import settings, öneki gerekiyor.

Proje adıyla önek değişkenleri, yeniden kullanılabilirliği bozduğundan django standartlarına aykırı olduğunu düşündüm. Proje adı ile

cevap

16

Evet, önek ROOT_URLCONF: Doğrudan zaten ayarlarını içe olmamalıdır

ROOT_URLCONF = 'myproject.urls' 

(Using settings in Python code bakınız). Bunun yerine, eski ve yeni proje düzenleri için çalışan aşağıdakileri kullanın.

from django.conf import settings 
54

Sadece sen senin ana myproject.urls accces zaman önek kullanımı zorlar eklersiniz, ancak size uygulamalar için her iki şekilde zorlamaz. Sen uygulamaları saklamak için seçebilir ya üst düzey klasörde: Eğer Alternatif from polls.models import Whatever

kullanırsınız Bu durumda python manage.py startapp polls kullandığınızda

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

Bu yapabilirsiniz Varsayılan konum:

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

Ve bu alırsınız:

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

Bu durumda from myproject.polls.models import Whatever ...

Bu nedenle, eski uygulamalar, diğer projelerde yeniden kullanabileceğinizi düşündüğünüz uygulamalar için daha iyidir ve ikincisi, sıkı sıkıya bağlı uygulamalar için daha iyidir. projenizin diğer bölümleri.

+0

Harika bir ayrıntı. Bunun için teşekkürler. – Kiwi