आप पहले और बाद में Django 1.3 स्थैतिक फ़ाइल हैंडलिंग मिश्रण और मिलान कर रहे हैं। मूल रूप से सभी स्थैतिक फ़ाइलों को MEDIA_URL
से परोसा जाता था, लेकिन Django 1.3 ने staticfiles contrib पैकेज और संबंधित STATIC_ROOT
और STATIC_URL
सेटिंग्स प्रस्तुत की। django.views.static.serve
नए staticfiles ऐप का उपयोग करता है, जिसे आपने सेट नहीं किया है।
मान लें कि आप Django 1.3 चला रहे हैं, सबसे पहले, आपको अपने INSTALLED_APPS
पर 'staticfiles' जोड़ना होगा। फिर, आपको STATIC_ROOT
और STATIC_URL
को परिभाषित करने की आवश्यकता होगी। मानक स्थान "स्थैतिक" नामक प्रोजेक्ट-रूट स्तर निर्देशिका है।
तुम भी StaticFiles टेम्पलेट संदर्भ प्रोसेसर जोड़ने की आवश्यकता होगी:
TEMPLATE_CONTEXT_PROCESSORS = (
...
'django.core.context_processors.static',
)
यह अपने टेम्पलेट में STATIC_URL
चर उपलब्ध करायेंगे, आप की तरह {{ STATIC_URL }}css/style.css
सभी कुछ के साथ अपने संसाधनों को संदर्भित कर सकते तो आपके स्थैतिक संसाधनों को "स्थिर" नामक ऐप (ओं) -लेवल निर्देशिका में भी जाना होगा। वास्तविक परियोजना-रूट स्तर "स्थैतिक" निर्देशिका का कभी भी उपयोग नहीं किया जाता है। यह केवल वह जगह है जहां collectstatic
प्रबंधन कमांड उत्पादन में उपयोग के लिए आपके सभी स्थिर संसाधनों को डंप करता है।
यदि आप चाहते हैं परियोजना चौड़ा निश्चित संसाधनों (किसी भी एक विशेष अनुप्रयोग से बंधा नहीं), आप एक पूरी तरह से अलग निर्देशिका (जैसे MEDIA_ROOT
याSTATIC_ROOT
के रूप में ही नहीं) की आवश्यकता होगी। मैं एक नाम "संपत्ति" का उपयोग करता हूं।
STATICFILES_DIRS = (
os.path.join(os.path.dirname(__file__), 'assets'), # or whatever you named it
)
MEDIA_ROOT
/MEDIA_URL
अब केवल (जैसे किसी भी फाइल FileField
और ImageField
रों के माध्यम से बनाए गए उपयोगकर्ता अपलोड करने के लिए उपयोग किया जाता है: आप तो Django बताने के लिए में STATICFILES_DIRS
सेटिंग के साथ साथ ही स्थिर संसाधनों के लिए यहाँ देखने के लिए की आवश्यकता होगी है, तो आप अभी भी यह की जरूरत है, लेकिन आप कभी भी मैन्युअल रूप से कुछ भी संग्रहीत नहीं करेगा।
जब आप उत्पादन तक पहुँचते हैं, अपने वेब सर्वर दोनों MEDIA_ROOT
और STATIC_ROOT
MEDIA_URL
पर और STATIC_URL
क्रमश: सेवा करने के लिए की आवश्यकता होगी। आप भी करने की आवश्यकता होगी रन:
$ python manage.py collectstatic
Django को अपनी सभी स्थिर फ़ाइलों को STATIC_ROOT
द्वारा निर्दिष्ट निर्देशिका में संकलित करने के लिए।
ऊफ, याद किया जाना चाहिए था मैं 1.3 में काम कर रहा था जब कोड 1.2 से है, तो क्या मेरे पास 1.2 कोड में बहुत अधिक परिवर्तन करने की आवश्यकता नहीं है, जिससे समस्या के बिना उस निर्देशिका का उपयोग करने में सक्षम हो? या मेरे लिए django 1.2 में डाउनगेट करना बेहतर होगा? – StanM
कुछ अन्य सेटिंग्स हैं, जैसे 'डेटाबास 'जो आपको अवमूल्यन चेतावनी दे सकती हैं या अन्यथा Django 1.3 के साथ संगतता के लिए संशोधित करने की आवश्यकता हो सकती है, लेकिन कुल मिलाकर अपेक्षाकृत कुछ अनिवार्य परिवर्तन हैं। व्यक्तिगत रूप से, मैं 1.3 के साथ चिपकने और ऐप को काम करने की सलाह दूंगा। इसे काम करने में संभावित रूप से शामिल मामूली काम स्टैटिकफाइल, कक्षा-आधारित विचार, बेहतर टेम्पलेट टैग इत्यादि जैसी चीजों के लाभ से बहुत अधिक है। इसके अलावा, यह अंततः 1.4 तक पहुंचना आसान बना देगा, जो लगभग एक जरूरी होगा मैंने जो देखा है उससे मुक्त हो जाओ। –