2011-09-17 15 views
19

मैं django में स्थिर फ़ाइलों और मीडिया फ़ाइलों के बारे में उलझन में हूँ। मैंने कहीं और देखा है कि लोग इसे एक दूसरे के साथ उपयोग करते हैं।django - मुझे media_root या static_root का उपयोग कब करना चाहिए?

मुझे media_root का उपयोग कब करना चाहिए और मुझे static_root का उपयोग कब करना चाहिए?

यदि मेरे पास साइट छवियां हैं तो क्या मुझे इसे स्थिर में रखना चाहिए? और अगर मेरे पास उत्पाद छवियां हैं तो क्या मैं इसे मीडिया में डालूं?

उत्तर

28

MEDIA_ROOT वह निर्देशिका है जहां फ़ाइल अपलोड रखे जाते हैं, साथ ही जहां जेनरेट की गई फ़ाइलें आमतौर पर संग्रहीत होती हैं। उदाहरण के लिए, मेरे Django ऐप्स में से एक उपयोगकर्ताओं को छवियों को अपलोड करने की अनुमति देता है। मॉडल कक्षाओं में से एक में, मैं से के साथ ImageField प्रकार का उपयोग करता हूं। जब भी कोई उपयोगकर्ता कोई छवि अपलोड करता है, तो फ़ाइल MEDIA_ROOT/%Y-%m/ में संग्रहीत होती है (%Y के साथ चालू वर्ष के साथ प्रतिस्थापित किया गया है और %m वर्तमान माह संख्या के साथ प्रतिस्थापित किया गया है)। साथ ही, जब सॉर्ल-थंबनेल अपलोड की गई छवि के लिए थंबनेल उत्पन्न करता है, तो यह MEDIA_ROOT/cache/ में कहीं थंबनेल by default रखता है।

STATIC_ROOT उस निर्देशिका को कॉन्फ़िगर करने के लिए उपयोग किया जाता है जहां स्थैतिक संपत्तियां रखी जाती हैं। उदाहरण के लिए, वेब पेजों के डिज़ाइन में उपयोग की जाने वाली साइट स्टाइलशीट्स, जावास्क्रिप्ट फ़ाइलें और छवियां STATIC_ROOT में जाने वाली फ़ाइलों के प्रकार हैं। यदि आपके पास एकाधिक इंस्टॉल किए गए ऐप्स हैं, तो प्रत्येक ऐप जो स्थैतिक फ़ाइलों का उपयोग करती है, उसकी अपनी स्थिर फाइल निर्देशिका हो सकती है। STATIC_ROOT में सभी ऐप्स की स्थिर फ़ाइलों की प्रतिलिपि बनाने के लिए आप collectstatic प्रबंधन फ़ंक्शन (python manage.py collectstatic के माध्यम से आमंत्रित) का उपयोग करते हैं।

+0

उत्तर के लिए धन्यवाद। एक और अनुवर्ती सवाल। अगर मुझे उत्पाद छवियां मिलती हैं तो क्या होगा? उसे कहाँ जाना चाहिए? व्यवस्थापक इसे अपलोड कर सकते हैं और साइट पर प्रदर्शित किए जाने चाहिए। –

+0

@ bash-: क्या आप डेटाबेस में उत्पाद छवियों के पथ संग्रहीत करते हैं? ['ImageField'] की फ़ाइलें (https://docs.djangoproject.com/en/dev/ref/models/fields/#imagefield) और [' FileField'] (https://docs.djangoproject.com/en/dev/ref/models/fields/# filefield) 'MEDIA_ROOT' में जाएं, इसलिए इस मामले में, हाँ, उत्पाद छवियां' MEDIA_ROOT' में जाती हैं (लेकिन आपको उन्हें 'MEDIA_ROOT' पर हाथ से अपलोड करने की आवश्यकता नहीं है - आपका ऐप को ऐसा करना चाहिए)। यदि आप मैन्युअल रूप से उत्पाद छवियों को बनाए रखते हैं और उन्हें टेम्पलेट्स पर '' टैग में संदर्भित करते हैं, तो उत्पाद छवियों को 'STATIC_ROOT' में जाना चाहिए। –

संबंधित मुद्दे