98 votes

Django Fichiers statiques 404

Je n'arrive pas à faire apparaître mes fichiers statiques. J'ai essayé divers paramètres et configurations de répertoires, etc., mais ils n'apparaissent que sous la forme de 404. J'ai installé debug_toolbar et je sais donc que STATIC_URL atteint mon contexte de requête.

La structure du répertoire montre /static (j'ai également placé le répertoire à l'intérieur du dossier de l'application repas, et des utilisateurs, juste pour essayer.

/mealmate
    /mealmate
    /meals
    /static
        /css
             /bootstrap.min.css
    /templates
    /users

Settings.py (quelques paramètres importants bien que j'ai expérimenté avec une variété d'autres) :

MEDIA_ROOT = os.path.join(PROJECT_PATH, 'media/')

STATIC_URL = '/static/'

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
)

WSGI_APPLICATION = 'mealmate.wsgi.application'

Dans le rendu de base.html

    <link rel="stylesheet" href="stackoverflow.com/static/css/bootstrap.min.css">

Des idées ? Merci

8voto

Seth Points 567

J'ai simplement ajouté l'équivalent de

STATICFILES_DIRS = (
    '/absolute_path_to_project/mealmate/static',
)

pour que ça marche. Bien sûr, remplacez absolute_path_to_project avec votre chemin actuel et, si nécessaire, ajoutez la lettre du lecteur.

8voto

Darwin Points 161

J'étais également bloqué par le problème des 404 jusqu'à ce que je réalise qu'Apache avait bloqué les requêtes vers le répertoire statique. J'ai utilisé python manage.py collectstatic pour copier tous les fichiers statiques dans le statique sous le répertoire de mon projet Root, c'est-à-dire /var/my/site/static . Avec

Alias /static /var/my/site/static
<Directory /var/my/site/static>
        Require all granted
</Directory>

sur /etc/httpd/conf/httpd.conf il fonctionne correctement maintenant.

Si aucune des réponses ci-dessus ne fonctionne, vous pouvez envisager de vérifier la configuration de votre serveur.

6voto

davor Points 1038

Dans mon cas, tout ce que j'ai eu à faire était de relancer le serveur :

python manage.py runserver

5voto

drewman Points 1475

Je suppose que vous utilisez Django 1.3+ ici.

Tout d'abord, vous devez définir quelques paramètres supplémentaires :

STATICFILES_FINDERS = [
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
]

STATICFILES_DIRS = [
    path.join(TOP_DIR, 'static'),
]

STATIC_ROOT = path.join(TOP_DIR, 'staticfiles')
STATIC_URL = '/static/'

Cela devrait vous aider à trouver ce répertoire.

De même, vous devez toujours accéder à vos fichiers statiques en utilisant STATIC URL :

<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.min.css">

4voto

chrisortman Points 782

Assurez-vous que mealmate est dans votre INSTALLED_APPS

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