2014-07-26 4 views
1

Je veux être en mesure de charger mes fichiers statiques sur mon serveur local, mais quand je les demande, le navigateur renvoie 404 pour chaque ressource.Django: les fichiers statiques retournent l'erreur 404

D'après ce que je peux comprendre, STATIC_URL est l'URL dans laquelle mes fichiers statiques seront servis. Et STATICFILES_FINDERS spécifie comment mes fichiers statiques seront découverts. J'ai mis STATICFILES_DIRS pour rechercher le répertoire static à la racine du projet, mais il ne semble pas être le trouver.

Sur mon settings.py,

# Python 2.7.5, Django 1.6 

import os 
BASE_DIR = os.path.dirname(os.path.dirname(__file__)) 

STATIC_URL = '/static/' 

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
) 

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

Ceci est ma structure de répertoire:

. 
|-- myapp 
    |-- settings.py 
    |-- ... 
    static 
    |-- images 
    |-- javascript 
    |-- stylesheets 

Répondre

1

Voici quelques idées:

  1. Vous avez besoin d'un serveur pour vos fichiers statiques . Utilisez-vous le serveur HTTP Apache? La meilleure façon de servir vos fichiers statiques est de les alias dans le fichier httpd.conf:

    Alias /static/ /path/to/static/ 
    <Directory /path/to/static> 
    Require all granted 
    </Directory> 
    
  2. Vous devez spécifier un STATIC_ROOT, qui pourrait être /path/to/your_project/static mais alors vous voudrez probablement mettre vos fichiers statiques actuels et des dossiers quelque part sinon, tout sera remplacé dans STATIC_ROOT lorsque vous appelez manage.py collectstatic. Je mets tous mes fichiers statiques, tels que Bootstrap, Tablesorter, images et icônes dans un dossier appelé assets, puis mettre assets dans ma liste STATICFILES_DIR.

  3. Utilisez manage.py collectstatic pour collecter tous les fichiers statiques et placez-les dans STATIC_ROOT pour qu'Apache puisse les trouver. Les fichiers statiques pour le site d'administration seront automatiquement copiés même si vous faites et non ajoutez-les à la liste STATICFILES_DIR.

Vérifiez ce post J'ai écrit, qui a plusieurs liens vers la documentation de Django sur le sujet.

+1

Les barres obliques de fin pour la directive Alias ​​doivent être équilibrées sur les arguments lors d'une sous-URL. C'est l'utilisation, 'Alias ​​/ statique/chemin/vers/statique' et pas 'Alias ​​/ statique// chemin/vers/statique'. Si ce n'est pas le cas, cela peut nuire à la façon dont Apache mappe les URL sur le système de fichiers, la barre oblique étant supprimée et le chemin calculé étant erroné. Cela peut entraîner une réponse d'erreur HTTP introuvable ou interdite selon la configuration d'Apache. –

+0

Merci @GrahamDumpleton! J'ai modifié la réponse pour équilibrer les barres obliques dans l'URL et le chemin. Cet exemple particulier provient du [guide d'utilisation de Django pour l'utilisation d'Apache avec mod_wsgi] (https://docs.djangoproject.com/fr/1.6/howto/deployment/wsgi/modwsgi/#serving-files) et des barres obliques sont correctement équilibrés comme vous l'avez indiqué. Merci encore! –

Questions connexes