2012-03-04 10 views
7

Estoy usando django-compressor para comprimir los archivos CSS y Javascript estáticos de mi sitio. Dado que sirvo los activos estáticos de mi sitio a través de Amazon S3, también estoy usando django-storages para subir mis archivos a S3.¿Funciona el django-compressor con la herencia de la plantilla?

Aquí está mi problema: estoy tratando de hacer una plantilla limpia de base.html que todas las otras plantillas de mi sitio puedan heredar y extender. Esto es lo que parece actualmente:

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

Como se puede ver, lo que estoy intentar que hacer aquí es permitir que mis plantillas que heredan esta plantilla para anular los css y js bloques, para que puedan definir su poseer css y javascript para ser comprimido. Lamentablemente, eso no es lo que sucede.

Cuando ejecuto python manage.py compress (para que django-compressor analice mis plantillas y genere el código javascript y css comprimido), en realidad no encuentra mis archivos css y javascript incluidos.

Por ejemplo, aquí está la plantilla de mi sitio index.html:

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

Cuando intento para visitar la página en mi sitio, me sale un error que dice que el archivo comprimido no existe.

Creo que lo que está sucediendo es que el comando python manage.py compress no está inspeccionando mis plantillas que heredan de base.html. Y dado que no los está analizando, no está generando ningún código comprimido.

Realmente me gustaría hacerlo funcionar, porque la única solución que he encontrado hasta ahora es agregar manualmente etiquetas {% compress %}...{% endcompress %} en cada archivo de plantilla que tengo explícitamente. Es que odio hacer eso, ya que se repite tanto en todas partes código :(

Cualquier consejo sería muy apreciada.

+0

Sonidos Para mí, el problema es como el error especifica: ¿existe el archivo en el sistema de archivos local? Recuerde que con S3, debe configurar el almacenamiento para guardar tanto local como remotamente. –

+0

Actualmente estoy haciendo eso como lo sugieren los documentos de django-compressor, a través de la clase CachedS3BotoStorage personalizada. Esta parte funciona bien (por ejemplo: si no estoy intentando comprimir un {% block%} .. {% endblock%} snippet). Además: no recibo ningún error cuando realmente ejecuto el comando de administración 'python manage.py compress', solo cuando intento ver una página que hereda de' base.html' y anula los bloques css o js. – rdegges

Respuesta

Cuestiones relacionadas