Django-compressor: Django ne récupère pas les fichiers compressés lorsque Debug est défini sur False

Créé le 22 déc. 2012  ·  5Commentaires  ·  Source: django-compressor/django-compressor

J'ai donc fait travailler Django-compressor en développement avec Debug = False. Cependant, une fois que j'ai défini Debug = True, django-compressor semble générer les URL, les fichiers et tout le reste, mais Django lui-même renvoie un 404 pour ces fichiers.

j'ai

STATIC_ROOT = os.path.join(PROJECT_DIR, "static_media")

et dans le dossier static_media de mon projet, je peux en effet voir le fichier CACHE/css/bfdeac875f7a.css qui a été créé par le compresseur.

Dans le fichier HTML généré, je peux également voir

<link rel="stylesheet" href="/static/CACHE/css/bfdeac875f7a.css" type="text/css" />

mais lorsque la page est chargée, runserver dit :

[21/Dec/2012 22:28:44] "GET /static/CACHE/css/bfdeac875f7a.css HTTP/1.1" 404 276

Est-ce que j'ai raté quelque chose ? j'ai déjà

  • ajouté 'django.core.context_processors.static', à TEMPLATE_CONTEXT_PROCESSORS
  • ajouté 'compressor.finders.CompressorFinder', à STATICFILES_FINDERS
  • ajouté 'compressor', à INSTALLED_APPS

Merci!

Commentaire le plus utile

Désolé, je ne peux pas croire que j'ai raté ça plus tôt : j'ai lu que vous aviez des problèmes lorsque DEBUG est _True_.

De toute façon. Lorsque DEBUG = False, votre runserver refusera, par défaut, de servir lui-même les fichiers statiques, en raison de problèmes de performances et de sécurité. C'est pour vous empêcher de l'utiliser en production. Pour pouvoir tester correctement vos fichiers statiques localement lorsque DEBUG est False, vous devez passer l'indicateur --insecure à runserver, comme documenté ici : https://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/ #django -admin-option---non sécurisé

Est-ce que ça résout ton problème ?

Tous les 5 commentaires

Salut,

Nous allons avoir besoin d'un peu plus d'informations sur votre configuration pour vous aider :

  • Vos paramètres COMPRESS_*, paramètre STATIC_URL, paramètres STATICFILES_*
  • Est-ce que staticfiles est dans votre INSTALLED_APPS ?
  • Quelle est votre version de Django ?
  • Les autres fichiers statiques fonctionnent-ils correctement ? Vous utilisez le runserver pour les servir, n'est-ce pas ?

Merci

Salut,

J'utilise Django 1.4.3, avec les paramètres suivants :

...

# Absolute path to the directory static files should be collected to.
# Don't put anything in this directory yourself; store your static files
# in apps' "static/" subdirectories and in STATICFILES_DIRS.
# Example: "/home/media/media.lawrence.com/static/"
STATIC_ROOT = os.path.join(PROJECT_DIR, "static_media")

# URL prefix for static files.
# Example: "http://media.lawrence.com/static/"
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
    os.path.join(PROJECT_DIR, "static"),
)

# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
    'compressor.finders.CompressorFinder',
)

COMPRESS_PRECOMPILERS = (
    ('text/coffeescript', 'coffee --compile --stdio'),
    ('text/x-scss', 'sass --scss {infile} {outfile}'),
)

...

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    # 'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    ...
    'compressor',
    ...
)

...

Les fichiers que je place manuellement dans static_media sont également inaccessibles à partir de l'url /static/ , donc je ne dois pas avoir configuré correctement les fichiers statiques... J'ai également migré depuis Django 1.3, si cela compte. Auriez-vous une idée de ce que je devrais essayer ?

De plus, runserver récupère avec succès les fichiers dans mon dossier static_media lorsque Debug est vrai, mais échoue lorsqu'il est faux...

Désolé, je ne peux pas croire que j'ai raté ça plus tôt : j'ai lu que vous aviez des problèmes lorsque DEBUG est _True_.

De toute façon. Lorsque DEBUG = False, votre runserver refusera, par défaut, de servir lui-même les fichiers statiques, en raison de problèmes de performances et de sécurité. C'est pour vous empêcher de l'utiliser en production. Pour pouvoir tester correctement vos fichiers statiques localement lorsque DEBUG est False, vous devez passer l'indicateur --insecure à runserver, comme documenté ici : https://docs.djangoproject.com/en/1.4/ref/contrib/staticfiles/ #django -admin-option---non sécurisé

Est-ce que ça résout ton problème ?

Oh mon Dieu, mon mauvais. J'avais inversé par inadvertance « True » et « False » dans ma question initiale, désolé pour la confusion !

Et merci beaucoup, ça résout le problème !

Cette page vous a été utile?
0 / 5 - 0 notes