116 votes

Django - Fichier statique non trouvé

J'ai vu plusieurs posts sur ce sujet mais je n'ai pas trouvé ma solution.

J'essaie de servir des fichiers statiques dans mon environnement de développement Django 1.3.

Voici mes paramètres

...
STATIC_ROOT = '/home/glide/Documents/django/cbox/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
  '/static/',
)
...

Mon urls.py

urlpatterns = patterns('',
...
  url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root', settings.STATIC_ROOT}
  ),
...
);

Mon /home/glide/Documents/django/cbox/static/ se présente comme suit

css
  main.css
javascript
image

J'obtiens une erreur 404 lorsque j'essaie d'accéder à l'application http://127.0.0.1:8000/static/css/main.css .

Dois-je spécifier des modèles pour css, javascript et les images individuellement ?

1voto

Daniel Butler Points 105

J'ai constaté que je déplaçais mon DEBUG dans mes paramètres locaux soit remplacé par un paramètre par défaut. False valeur. Il s'agit essentiellement de s'assurer que le paramètre DEBUG est en fait faux si vous développez avec DEBUG y runserver .

1voto

Rahul Verma Points 141

Il peut y avoir les éléments suivants dans votre settings.py :

TEMPLATES = [
{
BACKEND" : 'django.template.backends.django.DjangoTemplates',

DIRS' : ["templates"],

APP_DIRS" : True,

OPTIONS" : {
# ... quelques options ici ...
},
}, ]

OU

STATIC_URL = '/static/'

OU

STATICFILES_DIRS = ( os.path.join(BASE_DIR, "static"), )

1voto

S Habeeb Ullah Points 428

Dans Django, il faut toujours se souvenir de deux choses à la fin d'un fichier settings.py

Pour le développement

STATIC_URL = '/static/'

Pour la production

STATIC_ROOT = '/static/'

Puisque vous travaillez dans un environnement de développement, supprimez les deux autres chemins de settings.py fichier

#STATIC_ROOT = '/home/glide/Documents/django/cbox/static/'
STATIC_URL = '/static/'
#STATICFILES_DIRS = (
#  '/static/',
#)

Et pour les urls.py apporter les modifications suivantes

urlpatterns = patterns('',
...
  url(r'^static/(?P<path>.*)$', 'django.views.static.serve',
    {'document_root', settings.STATIC_URL}
  ),
...
);

J'espère que cela résoudra les problèmes

1voto

Parth Goti Points 21

Django n'a pas de solution intégrée pour servir les fichiers statiques, du moins pas dans la section production lorsque DEBUG doit être égal à False.

Nous devons utiliser un tiers pour y parvenir.

Pour installer WhiteNoise dans votre environnement virtuel, tapez la commande ci-dessous :

pip install whitenoise

puis Modifier les paramètres

Pour que Django sache que vous voulez utiliser WhitNoise, vous devez le spécifier dans la liste MIDDLEWARE du fichier settings.py :

MIDDLEWARE = [
    'django.middleware.security.SecurityMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'whitenoise.middleware.WhiteNoiseMiddleware',
].

0voto

Overdrivr Points 2869

Si vous avez ajouté le django-storages (pour supporter le téléchargement de fichiers vers S3 dans votre application django par exemple), et si comme moi vous n'avez pas lu correctement la documentation de ce module il suffit de supprimer cette ligne de votre settings.py :

STATICFILES_STORAGE = 'storages.backends.s3boto3.S3Boto3Storage'

Sinon, vos fichiers statiques ne seront pas recherchés sur votre machine locale mais à distance dans le seau S3, y compris le CSS du panneau d'administration, ce qui brisera effectivement le CSS du panneau d'administration.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X