2014-07-16 21 views
9

Próbuję pozwolić django-kompresorowi pracować z antresolą. Do pierwszej próby po prostu zainstalowałem kompresor django (jak powinno być zrobione dla antresoli) i zmieniono DEBUG = False, ale nic się nie zmieniło w HTML generowanym z Django. Więc po docs sprężarki django i modyfikować moje settings.py:Django Compressor nie minimalizuje plików

STATICFILES_FINDERS = (
"django.contrib.staticfiles.finders.FileSystemFinder", 
#"django.contrib.staticfiles.finders.AppDirectoriesFinder", 
#'django.contrib.staticfiles.finders.DefaultStorageFinder', 
"compressor.finders.CompressorFinder", 
) 

INSTALLED_APPS = (
    "django.contrib.admin", 
    "django.contrib.auth", 
    "django.contrib.contenttypes", 
    "django.contrib.redirects", 
    "django.contrib.sessions", 
    "django.contrib.sites", 
    "django.contrib.sitemaps", 
    "django.contrib.staticfiles", 
    "mezzanine.boot", 
    "mezzanine.conf", 
    "mezzanine.core", 
    "mezzanine.generic", 
    "mezzanine.blog", 
    "mezzanine.forms", 
    "mezzanine.pages", 
    "mezzanine.galleries", 
    "mezzanine.twitter", 
    #"mezzanine.accounts", 
    #"mezzanine.mobile", 
    #'debug_toolbar', 
    "compressor", 
) 

OPTIONAL_APPS = (
    #"debug_toolbar", 
    "django_extensions", 
    #"compressor", I commented it to follow the django-compressor doc 
    PACKAGE_NAME_FILEBROWSER, 
    PACKAGE_NAME_GRAPPELLI, 
) 

COMPRESS_ENABLED = True 
COMPRESS_ROOT = STATIC_ROOT 

Są to pakiety zainstalowane w moim otoczeniu:

Django==1.6.5 
Mezzanine==3.1.5 
Pillow==2.5.1 
bleach==1.4 
distribute==0.6.24 
django-appconf==0.6 
django-compressor==1.4 
filebrowser-safe==0.3.5 
future==0.9.0 
grappelli-safe==0.3.12 
html5lib==1.0b3 
oauthlib==0.6.3 
pytz==2014.4 
requests==2.3.0 
requests-oauthlib==0.4.1 
six==1.7.3 
tzlocal==1.0 

Oto, w jaki sposób stosować sprężarkę w szablonach:

{% load pages_tags mezzanine_tags i18n future staticfiles compress %} 
{% compress css %} 
<link rel="stylesheet" href="{% static "css/custom/mycss.css" %}"> 
{% endcompress %} 

i nic się nie działo, dopóki nie uruchomił:

python manage.py kompresować --force

Więc teraz mam cache zaludnionych oraz HTML wygenerowany z Django wskazuje plików w pamięci podręcznej jak:

<link rel="stylesheet" href="/static/CACHE/css/16e8b98f5bd3.css" type="text/css" media="screen"> 

ale pliki nie są zminimalizowany kompresor django po prostu skopiował je i zmienił nazwę. Czy wiesz, dlaczego sprężarka nie zminimalizuje ich?

Odpowiedz

2

Problem był MEMCACHED, wyłączając je, Django wykazała problemy uprawnieniami i minify css musiałem wybrać filtr jak compressor.filters.cssmin.CSSMinFilter

31

Django sprężarka nie będzie działać na serwerze django nawet z DEBUG = False. Również domyślnie scali wszystkie twoje pliki CSS w jeden. Aby wykonać inne czynności, takie jak minify, możesz zastosować filtr. Oto, co zrobiłem w moim settings.py

COMPRESS_ENABLED = True 
COMPRESS_CSS_FILTERS = ['compressor.filters.css_default.CssAbsoluteFilter', 'compressor.filters.cssmin.CSSMinFilter'] 

Myślę, że będzie to pomocne dla innych. Twoje zdrowie!