2012-03-04 26 views
7

我使用的是django-compressor來壓縮我站點的靜態CSS和Javascript文件。由於我通過Amazon S3服務於我的網站的靜態資產,因此我還使用django-storages將我的文件上傳到S3。django-compressor是否可以使用模板繼承?

這是我的問題:我試圖做一個乾淨的base.html模板,我的網站的所有其他模板可以繼承和擴展。下面是它看起來像現在:

{% load compress %} 

<html> 
<head> 
    <!-- test --> 
    {% compress css %} 
    <link rel="stylesheet" type="text/css" media="screen" href="{{ STATIC_URL }}css/styles.css" /> 
    {% endcompress %} 

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

    {% compress js %} 
    {% block js %}{% endblock %} 
    {% endcompress %} 
</head> 
<body> 
    {% block body %}{% endblock %} 
</body> 
</html> 

正如你所看到的,就是我試圖在這裏做的是讓我的模板繼承此模板覆蓋cssjs塊,這樣他們就可以定義自己的自己的CSS和JavaScript被壓縮。不幸的是,那不會發生什麼。

當我運行python manage.py compress(讓django-compressor分析我的模板並生成壓縮的javascript和css代碼)時,它實際上找不到我包含的css和javascript文件。

舉例來說,這裏是我的網站index.html模板:

{% block css %} 
{{ block.super }} 
<link rel="stylesheet" type="text/css" media="screen" href="{{ STATIC_URL }}css/index.css" /> 
{% endblock %} 

當我試圖訪問我的網站上該網頁,我得到一個錯誤,指出該壓縮文件不存在。

我認爲發生了什麼事是python manage.py compress命令不檢查我的模板,從base.html繼承。由於它不分析它們,它不會生成任何壓縮的代碼。

我真的想讓這個工作,因爲我迄今發現的唯一解決方法是手動添加{% compress %}...{% endcompress %}標籤在我明確每個單一的模板文件。我只是不願意這樣做,因爲它重複無處不在這麼多的代碼:(

任何意見,將不勝感激。

+0

聲音對我來說喜歡這個問題是因爲錯誤指定:文件是否存在於本地文件系統上?記住S3,你必須設置存儲來保存本地以及遠程。 – 2012-03-04 22:19:53

+0

我目前正在通過自定義的CachedS3BotoStorage類來處理django-compressor文檔。這部分工作正常(例如:如果我不試圖壓縮{%block%} .. {%endblock%}片段)。另外:當我實際運行'python manage.py compress'管理命令時,我沒有收到任何錯誤 - 只有當我實際嘗試查看從'base.html'繼承的頁面並覆蓋css或js塊時纔會出現錯誤。 – rdegges 2012-03-04 23:03:51

回答