2010-11-17 89 views
10

我使用Django 1.2.3中的django-compressor應用程序來縮小和合並大量包含的CSS和JS文件。在基本模板,我有Django壓縮器和模板繼承

{% 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壓縮機使用Django 1.2,我把它像這樣:

{% 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 %} 

而且我extra_compressed_js塊我會經常使用您所描述的方法,用{{ block.super }}通過繼承增加更多的js 。它適合我,沒有任何麻煩。有一點你必須要小心的是所有的JS壓縮需要在本地文件系統上可用。這就是爲什麼我有一個單獨的external_js塊,對於來自外部來源的JS。

這聽起來像是其他事情正在發生。確保您的壓縮機副本是最新的,然後檢查您的繼承以確保其實際工作正常。一種方法是通過在您的設置中設置COMPRESS=False並確保您想要包含的所有JavaScript實際顯示在呈現的模板中。

+0

現在看看這個。 – 2010-11-17 16:22:24

+0

意外地在我的壓縮文件中包含外部樣式表 - 非常感謝! – 2010-11-17 20:08:25

+0

如果您使用脫機壓縮,例如'django-admin.py compress',這種方式仍然可行嗎?雖然它適用於請求壓縮,但在離線壓縮過程中,它似乎無法正確創建從其中繼承的頁面的文件。 [相關文章](http://stackoverflow.com/questions/9559018/does-django-compressor-work-with-template-inheritance) – MrColes 2013-01-25 19:55:08

-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。就像我說的,我不知道它是否會起作用,但它可能會起作用。