2012-04-16 13 views
7

Bu, yeni proje yapısıdır (Django 1.4 sürüm notlarından). Ben emin değilim neDjango 1.4'teki statik klasörler yapısı?

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

Ben

myproject/myproject/static/ (birlikte settings.py, urls.py ile ...)

VEYA

için STATIC_ROOT işaret etmelidir olup olmadığıdır Üst düzey dizin myproject/static (projemin yanında, myapp1, myapp2)?

+3

"Resmi" kelimesinin ne olduğunu bilmiyorum, ancak üst düzey dizinin daha mantıklı olduğunu düşünüyorum. – agf

cevap

7

STATIC_ROOT Python ithal ilgili, bu yüzden tamamen size bağlıdır değildir. Normalde, myproject/static/, dolayısıyla os.path.join(PROJECT_ROOT, 'static/') ayarlarında daha kolaydır. settings.py

# Absolute path to the directory static files should be collected to. 
# Don't put anything in this directory yourself; store your static files 
# in apps' "static/" subdirectories and in STATICFILES_DIRS. 
# Example: "/home/media/media.lawrence.com/static/" 

Daha iyi içine

San4ez önerildiği gibi güncelleme ve notlar yapısına göre, poll/static/ içine poll uygulamanın statik dosyaları koymak.

2

Ben myproject/static/ statik için iyi bir yer olduğunu @okm katılıyorum, ama aynı zamanda myproject/polls/media da uygulamanın içinden görüntüler, css ve js saklayabilir. Eğer komutla STATIC_ROOT için django.contrib.staticfiles uygulamasını yapılandırmak için ve media statik kopya daha

python manage.py collectstatic 

bu statik ile uygulamanızı yaymak ve uygulamanızı diğer projelerde

serbestçe kullanılabilir izin vermesidir Bu yaklaşımın avantajı
+0

css, js, ve resimlerim benim projemde/projemde/statikimde ve ayrıca projemde/anketimde/statikimde alt klasör olmalıdır. 'Media' adlı bir klasör kullanmak, kullanıcılar tarafından yüklenen resimler ve diğer dosyalar için genellikle django'da kullanılan klasör adıyla çakıştığı için tehlikelidir. Aynı zamanda yönetici statik dosyaları (collectstatic sonra) tarafından kullanılan bir klasördür. Statik bir toplama için onları bir üretim sunucusu için toplayın ve daha sonra bunları merkezi bir klasörden sunun (genellikle /var/www/www.mysite.com/static gibi myproject klasör yapınızın dışında). – hobs

1

STATIC_ROOT, yalnızca staticfiles katkı uygulamasının tüm statik dosyaları toplayıp depolayacağı bir dosya yoludur. Öğeleri toplamak için bir yer, hepsi bu. Önemli olan, bu konumun geçici depolama alanı olmasıdır ve temel olarak uygulamanızı dağıtım için paketlerken kullanılır.

ürün STATICFILES_DIRS listelenen herhangi bir ekstra dosya yolu yerlerde INSTALLED_APPS ve ek olarak listelenen tüm uygulamalar içinde static denilen herhangi bir dizinden toplamak için staticfiles uygulama arar.

Projelerim için, statik dosyalar için kullandığım www klasörünü ve yalnızca dağıtımı sırasında kullanılan çeşitli diğer dosyaları oluşturduğum bir deploy dizini oluşturuyorum. Bu dizin projenin en üst düzeyindedir.

Değişkeni, kullanıcının yazma izni olan herhangi bir konuma işaret edebilir, proje dizininde bulunması gerekmez.