2010-11-17 22 views
10

मैं Django 1.2.3 में django-compressor ऐप का उपयोग कर रहा हूं ताकि कई सीएसएस और जेएस फाइलों को कम किया जा सके। किसी मूल टेम्पलेट में, मेरे पास हैDjango-compressor और टेम्पलेट विरासत

{% load compress %} 
{% compress js %} 
{% block js %} 
<script type="text/javascript" src="/site_media/js/jquery.query-2.1.7.js"> 
{% endblock %} 

और एक बच्चे में,

{% block js %} 
{{block.super}} 
<script type="text/javascript" src="/site_media/js/jquery.validate.min.js"> 
{% endblock %} 

जब टेम्पलेट्स प्रस्तुत करना, पहले स्क्रिप्ट टैग सही ढंग से न्यूनतम किया गया है, लेकिन दूसरा नहीं है। इसी तरह के परिदृश्यों में, मैंने पुष्टि की है कि मुद्दा विरासत है।

मैं बाल टेम्पलेट्स में संपीड़ित टैग का उपयोग नहीं करना चाहता, क्योंकि इस ऐप का उपयोग करने का आधा बिंदु फाइलों को मर्ज करना और HTTP अनुरोधों पर वापस कटौती करना है। क्या मैं कुछ भूल रहा हूँ? क्या कोई और समाधान है जिसमें मुझे देखना चाहिए?

उत्तर

14

मैं Django 1.2 के साथ Django-कंप्रेसर का उपयोग करें, और मैं इसे सेट अप इस तरह:

{% compress js %} 
<script type="text/javascript" src="{{ MEDIA_URL }}js/jquery-1.4.2.min.js"></script> 
{% block extra_compressed_js %}{% endblock %} 
{% endcompress %} 

{% block external_js %}{% endblock %} 

और {{ block.super }} के साथ मेरी extra_compressed_js ब्लॉक मैं अक्सर विधि आप वर्णित का उपयोग करेगा, साथ विरासत के माध्यम से अधिक js जोड़ने के लिए । यह बिना किसी परेशानी के मेरे लिए काम करता है। एक बात यह है कि आपको सावधान रहना है कि सभी जेएस को संपीड़ित करने के लिए स्थानीय फाइल सिस्टम पर उपलब्ध होना आवश्यक है। यही कारण है कि मेरे पास बाहरी स्रोत से आने वाले जेएस के लिए अलग external_js ब्लॉक है।

ऐसा लगता है कि कुछ और चल रहा है। सुनिश्चित करें कि कंप्रेसर की आपकी प्रति अद्यतित है, और उसके बाद यह सुनिश्चित करने के लिए कि यह वास्तव में सही तरीके से काम कर रहा है, अपनी विरासत को जांचें। ऐसा करने का एक तरीका आपकी सेटिंग्स में COMPRESS=False सेट करके और यह सुनिश्चित करना है कि आप जिस जावास्क्रिप्ट को शामिल करना चाहते हैं वह वास्तव में प्रस्तुत टेम्पलेट में दिखाई देता है।

+0

अब इसमें देख रहे हैं। –

+0

आकस्मिक रूप से मेरे संपीड़न में बाहरी स्टाइलशीट शामिल है- बहुत बहुत धन्यवाद! –

+0

क्या यह अभी भी काम करता है यदि आप ऑफलाइन संपीड़न का उपयोग कर रहे हैं, उदाहरण के लिए, 'django-admin.py compress'? हालांकि यह अनुरोध में संपीड़न के लिए काम करता है, ऑफ़लाइन संपीड़न के दौरान यह इस पृष्ठ से प्राप्त होने वाले पृष्ठों के लिए फ़ाइलों को ठीक तरह से बनाने के लिए प्रतीत नहीं होता है। [संबंधित पोस्ट] (http://stackoverflow.com/questions/9559018/does-django-compressor-work-with-template-inheritance) – MrColes

-1

मैं अगर यह काम करेंगे पता नहीं है, लेकिन यह एक कोशिश के लायक लगता है:

{% compress js %} 
{% block js %} 
{% endblock %} 
{% endcompress %} 

{% compress css %} 
{% block css %} 
{% endblock %} 
{% endcompress %} 

और उसके बाद किसी दिए गए बच्चे टेम्पलेट में:

सबसे पहले अपने आधार टेम्पलेट में इन ब्लॉकों है

{% block js %} 
{{ block.super }} 
<script type="text/javascript" src="/site_media/js/jquery.query-2.1.7.js"> 
{% endblock %} 

हमेशा block.super का उपयोग करें। जैसे मैंने कहा, मुझे नहीं पता कि यह काम करेगा या नहीं, लेकिन यह हो सकता है।

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