2011-09-17 26 views
19

Django'daki statik dosyalar ve medya dosyaları hakkında kafam karıştı. Başka yerlerde, insanların birbirlerinin yerine kullanabileceğini gördüm.django - media_root veya static_root'u ne zaman kullanmalıyım?

media_root'u ne zaman kullanmalıyım ve static_root'u ne zaman kullanmalıyım?

Sitede resim varsa, bunları statik yapmalı mıyım? Ürün resimleri varsa medyaya koyarsam? Üretilen dosyaların genellikle depolandığı yerlerin yanı sıra, dosya yüklemelerinin yerleştirildiği dizin de

cevap

28

. Örneğin, Django uygulamalarından biri, kullanıcıların resim yüklemesine olanak tanır. Model sınıflarından birinde, sorl-thumbnail'dan upload_to='%Y-%m' ile ImageField türünü kullanıyorum. Bir kullanıcı bir görüntüyü yüklediğinde, dosya MEDIA_ROOT/%Y-%m/ (%Y geçerli yıl ile değiştirilir ve %m geçerli ay numarası ile değiştirilir) kaydedilir. Ayrıca, sorl-thumbnail yüklenen bir görüntü için bir küçük resim oluşturduğunda, numaralı küçük resmi MEDIA_ROOT/cache/ numaralı telefona yerleştirir. Statik varlıkların yerleştirildiği dizini yapılandırmak için

STATIC_ROOT kullanılır. Örneğin, web sayfalarının tasarımında kullanılan site stil sayfaları, JavaScript dosyaları ve resimler, STATIC_ROOT'a giren dosya türleridir. Birden fazla yüklü uygulama varsa, statik dosyaları kullanan her uygulama kendi statik dosya dizinine sahip olabilir. Tüm uygulamaların statik dosyalarını STATIC_ROOT'a kopyalamak için collectstatic yönetim işlevini (python manage.py collectstatic aracılığıyla çağrılır) kullanırsınız. Cevabınız için teşekkürler:

+0

. Bir daha takip sorusu. Ürün resimleri alsam ne olur? Bu nereye gitmeli? Yöneticiler yükleyebilir ve sitede gösterilmelidir. –

+0

@ bash-: Ürün resimlerinin yollarını veritabanında saklıyor musunuz? ['ImageField'] (https://docs.djangoproject.com/en/dev/ref/models/fields/#imagefield) ve [' FileField'] dosyaları (https://docs.djangoproject.com/en/dev/ref/models/fields/# filefield) 'MEDIA_ROOT' içinde git, yani bu durumda, evet, ürün resimleri MEDIA_ROOT'ta yer alıyor (ancak bunları MEDIA_ROOT'a elle yüklemeniz gerekmiyor; uygulama bunu yapmalıdır). Ürün resimlerini manuel olarak sürdürüyorsanız ve bunları şablonlardaki "" etiketlerine yönlendiriyorsanız, ürün resimleri "STATIC_ROOT" içinde olmalıdır. –

İlgili konular