2012-07-10 19 views
5

मैं अपने स्थिर फाइलों का प्रबंधन करने के लिए Django 1.3.1 और contrib.collectstatic एप्लिकेशन का उपयोग कर रहा।Django collectstatic अधिभावी

मेरे परियोजना संरचना

myproject 
    - settings.py 
    - static-media 
    - urls.py 
    - media 
    - manage.py 

जहां static-media इस परियोजना के लिए स्थिर फ़ाइलों वाला कोई फ़ोल्डर है। मेरी settings.py में मेरे पास है:

PROJECT_PATH = os.path.realpath(os.path.dirname(__file__)) 
STATIC_ROOT = os.path.join(PROJECT_PATH, "static")+'/' 
STATIC_URL = "/static/" 
STATICFILES_DIRS = (
     os.path.join(PROJECT_PATH, 'static-media'), 
) 

मैं admin_tools उपयोग कर रहा हूँ व्यवस्थापक के लेआउट बदलने के लिए। हालांकि मैं admin_tools से एक विशिष्ट सीएसएस फ़ाइल (theming.css) ओवरराइड करना चाहते। तो मेरे स्थिर-मीडिया फ़ोल्डर में मैंने admin_tools/css/theming.css डाल दिया। जब मैं पहली बार python manage.py collectstatic चलाने के लिए, यह admin_tools में डिफ़ॉल्ट theming.css अनदेखी और एक मैं स्थिर मीडिया में परिभाषित का उपयोग करके अपेक्षित रूप से काम करता है। दुर्भाग्य से यदि मैं फिर से आदेश चलाता हूं, तो यह मेरे सीएसएस को ओवरराइड करता है और डिफ़ॉल्ट जोड़ता है।

यहाँ python manage.py findstatic admin_tools/css/theming.css के लिए उत्पादन है:

Found 'admin_tools/css/theming.css' here: 
    /home/paulo/Desktop/Projects/zennetwork/prd/zennetwork/static-media/admin_tools/css/theming.css 
    /home/paulo/Desktop/Projects/zennetwork/prd/lib/python2.7/site-packages/admin_tools/theming/static/admin_tools/css/theming.css 

किसी भी मदद की सराहना की है। धन्यवाद।

उत्तर

2

मैं 1.4 Django करने के लिए उन्नत और इस मुद्दे को अब हल हो गई है।

भी सुनिश्चित नहीं हैं, हालांकि यह क्या कारण होता है।

7

Django docs केवल कहते हैं:

डुप्लिकेट फ़ाइल नाम डिफ़ॉल्ट कैसे टेम्पलेट संकल्प काम करता है के लिए एक समान तरीके से हल किया द्वारा कर रहे हैं: फ़ाइल है कि पहले निर्दिष्ट स्थानों में से एक में पाया जाता है इस्तेमाल किया जाएगा। यदि आप उलझन में हैं, तो खोजशब्द कमांड आपको यह दिखाने में मदद कर सकता है कि कौन सी फाइलें पाई जाती हैं।

findstatic से आपके आउटपुट के आधार पर पहला व्यक्ति आपकी कस्टम शैली होना चाहिए, और इसलिए इसे एकत्रित किया जाना चाहिए। ऐसा क्यों नहीं कर रहा है यह एक रहस्य है।

तुम हमेशा सिर्फ स्पष्ट रूप से अन्य फ़ाइल को अनदेखा कर सकते हैं। यह एक दर्द का एक सा है, लेकिन यह गारंटी है कि अपनी शैली ओवरराइट नहीं मिलता है:

python manage.py collectstatic --ignore site-packages/admin_tools/css/theming.css 

आप अन्य फ़ाइलों को अनदेखा करने की जरूरत है, साथ ही, आप --ignore <pattern> जोड़ने रख सकते हैं। यह स्वीकार्य रूप से एक बहुत व्यवहार्य दीर्घकालिक समाधान नहीं है, हालांकि।

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