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 ?

6voto

Shinto Joseph Points 766

STATICFILES_DIRS est utilisé dans développement y STATIC_ROOT en production ,

STATICFILES_DIRS et STATIC_ROOT ne doivent pas avoir le même nom de dossier,

Si vous devez utiliser exactement le même dossier statique pour le développement et la production, essayez cette méthode

l'inclure dans settings.py

import socket

HOSTNAME = socket.gethostname()

# if hostname same as production url name use STATIC_ROOT 
if HOSTNAME == 'www.example.com':
    STATIC_ROOT = os.path.join(BASE_DIR, "static/")

else:
    STATICFILES_DIRS = [
            os.path.join(BASE_DIR, 'static/'),
        ]

5voto

Aklank Jain Points 425

Une autre erreur peut être le fait que votre application ne figure pas dans la liste des applications. INSTALLED_APPS le référencement comme :

INSTALLED_APPS = [
    # ...
    'your_app',
]

Sans cela, vous risquez de rencontrer des problèmes tels que la non détection de vos fichiers statiques, c'est à dire tous les fichiers de votre application. Même si cela peut être correct comme suggéré dans la bonne réponse en utilisant :

STATICFILES_DIRS = (adding/path/of/your/app)

Il peut s'agir d'une des erreurs et doit être vérifié si l'on obtient cette erreur.

4voto

Aansh Savla Points 11

Dans votre cmd, tapez la commande python manage.py findstatic --verbosity 2 static Si vous avez créé un environnement virtuel, il y aura un dossier statique dans ce dossier virtual_environment_name. VIRTUAL_ENVIRONMENT_NAME\Lib\site-packages\django\contrib\admin\static . En exécutant la commande "findstatic" ci-dessus, si Django vous indique ce chemin, il vous suffit de coller tous vos fichiers statiques dans ce répertoire statique. Dans votre fichier html, utilisez la syntaxe JINJA pour href et vérifiez qu'il n'y a pas d'autres css en ligne. S'il y a toujours une image src ou url après avoir utilisé la syntaxe JINJA, ajoutez-y le préfixe '/static'. Cela a fonctionné pour moi.

4voto

Saiful Islam Points 71

Je résous ce problème en ajoutant le nom de mon projet dans INSTALLED_APPS. enter image description here

2voto

Mumin Points 7
TEMPLATE_DIR=os.path.join(BASE_DIR,'templates')
STATIC_DIR=os.path.join(BASE_DIR,'static')

STATICFILES_DIRS=[STATIC_DIR]

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