2013-04-19 10 views
5

मैंने अपने Django प्रोजेक्ट में टेम्पलेट्स को इस तरह से व्यवस्थित किया है कि साइट पर प्रत्येक पृष्ठ में "सामान्य" कम फ़ाइल शामिल है और प्रत्येक पृष्ठ एक और कम फ़ाइल भी निर्दिष्ट कर सकता है जिसमें पेज-विशिष्ट शैलियों शामिल हैं।सामान्य फ़ाइलों को आयात करने वाली कई कम फ़ाइलों वाली django-compressor का उपयोग कैसे करें?

समस्या यह है कि मुझे "सामान्य" कम फ़ाइल में चरों को संदर्भित करने में सक्षम होने के लिए पृष्ठ-विशिष्ट LESS फ़ाइल की आवश्यकता है। ऐसा करने का सबसे आसान तरीका, मैंने सोचा था कि, परिवर्तनीय घोषणाओं को एक अलग फ़ाइल में ले जाना था कि दोनों कम फ़ाइलें @import हो सकती हैं।

हालांकि, Django ऐप्स अपनी स्थिर फ़ाइलों को संग्रहीत करने के लिए अलग-अलग निर्देशिकाओं का उपयोग करते हैं।

- common 
    - static 
     - css 
     - definitions.less 
     - common.less 
- other 
    - static 
     - css 
     - other.less

दोनों common.less और other.lessdefinitions.less आयात करने की आवश्यकता: अंत में, फाइल सिस्टम इस तरह दिखता है।

@import "definitions.less"; 

यहाँ कैसे कम फ़ाइलें वास्तव में पृष्ठ पर शामिल किए गए हैं है, बस मामले में मदद करता है कि में: common.less के मामले में यह रूप में सरल रूप में है

{% load compress %} 
{% load static %} 

{% compress css %} 
    <link href="{% static "css/common.less" %}" 
      rel="stylesheet" type="text/less"> 
{% endcompress %} 

क्या सबसे आसान तरीका होगा यह सुनिश्चित करने के लिए कि कम परिवर्तनीय परिभाषाएं कम फ़ाइलों दोनों के लिए उपलब्ध हैं?

  • यह ढीला-युग्मन (शेष साइटों पर किसी भी पक्ष प्रभाव के बिना किसी ऐप को निष्क्रिय करने की क्षमता) के लाभों को निकालता है: मैं कारणों की एक जोड़ी के लिए कम फ़ाइलों के संयोजन से बचना चाहते हैं।
  • एक पृष्ठ के लिए अतिरिक्त डेटा पुनर्प्राप्त किया जा रहा है क्योंकि सभी ऐप्स के लिए सभी शैलियों को प्राप्त किया जाना चाहिए।
+0

क्या आपको इसका उत्तर मिला? मुझे इस समस्या का सामना करना पड़ा है –

+0

इस मुद्दे को हल करने पर कोई शब्द? –

उत्तर

0

हम अपने ऐप में एक ही काम करते हैं - हमारे पास एक सामान्य फ़ाइल मुख्य है। जब तक कि कई अन्य कम फ़ाइलों द्वारा शामिल नहीं किया जाता है। हालांकि, हम इस मुद्दे में भाग नहीं लेते हैं। मुझे लगता है कि इसके चारों ओर कुछ तरीके हैं - आप अपनी स्थिर फाइलों का स्थान बदल सकते हैं।

django STATICFILES_DIRS में एक सेटिंग है - और ऐसा लगता है कि आप अपनी स्थिर फ़ाइलों का स्थान बदल सकते हैं यदि आप इस तरह के ऐप्स में घोंसले के बजाय चाहते हैं। https://docs.djangoproject.com/en/dev/ref/settings/#std:setting-STATICFILES_DIRS

हमारे कोड इस

{% compress css %} 
{% include "_base_css.html" %} 
{% endcompress %} 

तरह लग रहा है और फिर _base_css.html बस सभी कम फ़ाइलें भी शामिल है, हमारे main.less पहले आने के साथ।

## _base_css.html 
<link rel="stylesheet" type="text/less" href="{{ STATIC_URL }}css/main.less"> 
<link rel="stylesheet" type="text/less" href="{{ STATIC_URL }}css/about.less"> 
<link rel="stylesheet" type="text/less" href="{{ STATIC_URL }}css/dashboard.less"> 

यह अपने प्रश्न से मेरे लिए स्पष्ट नहीं है कि क्या त्रुटि है, लेकिन मेरा मानना ​​है कि अपने सामान्य कम फ़ाइल किसी अन्य कम फ़ाइल से पहले सुलभ होने के लिए शामिल किया जाना चाहिए। आपके कोड स्निपेट में ऐसा लगता है कि आप इसे शामिल नहीं करते हैं। संपीड़न के मामले में, मुझे नहीं लगता कि आपके सभी साइटवाइड सीएसएस को एक फ़ाइल में संपीड़ित करना बहुत बुरा है - यह पहली बार डाउनलोड होता है और फिर पूरी तरह से कैश किया जाता है।

आशा है कि यह सहायक होगा।

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