Django fichiers Statiques 404

Je n'arrive pas à obtenir mes fichiers statiques. J'ai essayé divers réglages et configurations de répertoires, etc., mais ils ne sont que des 404s. J'ai debug_toolbar installé donc sachez que STATIC_URL atteint le contexte de ma requête.

structure de répertoire montrant / statique (j'ai aussi placé le répertoire dans le dossier meals app, et les utilisateurs, juste pour l'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'

en base.rendu html

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

des idées? Merci

48
demandé sur KindOfGuy 2012-10-10 02:38:18

9 réponses

C'est la solution de travail statique/media/modèle d'accès dans django pour windows,

settings.py

import os.path

STATIC_ROOT = ''

STATIC_URL = '/static/'

STATICFILES_DIRS = ( os.path.join('static'), )
77
répondu Amar Kamthe 2013-06-13 07:09:11

si vous exécutez ceci sur un serveur web, Copiez-vous les fichiers statiques dans un dossier accessible au public? Par exemple:

# web accessible folder
STATIC_ROOT = '/home/your_name/www/mealmate/static/'

# URL prefix for static files.
STATIC_URL = '/static/'

# Additional locations of static files
STATICFILES_DIRS = (
    # location of your application, should not be public web accessible 
    '/home/your_name/website/mealmate/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',
)

alors vous pouvez utiliser ce post Django fichiers statiques et copier les fichiers statiques dans le dossier accessible au public en utilisant manage.py

# --link    Create a symbolic link to each file instead of copying.
# --noinput Do NOT prompt the user for input of any kind.
#
python manage.py collectstatic -link --noinput

Espère que ça aide!

19
répondu eodgooch 2017-05-23 11:47:01

pour moi cela s'est avéré être causé par la mise de debug à false dans settings.py . Une solution consiste à passer le commutateur --insecure à runserver , mais la vraie solution est d'utiliser un serveur Web approprié pour servir les fichiers statiques. Voir les réponses à cette question pour plus de détails.

17
répondu Arthur Tacca 2017-05-23 12:17:59

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 par votre chemin réel et, si nécessaire, ajoutez la lettre de commande.

5
répondu Seth 2013-08-12 00:26:44

assurez-vous que mealmate est dans votre INSTALLED_APPS

4
répondu chrisortman 2013-11-25 03:13:35

j'étais également bloqué dans le problème 404 jusqu'à ce que je me rende compte Qu'Apache avait bloqué les requêtes au dir statique. J'ai utilisé python manage.py collectstatic pour copier tous les fichiers statiques dans le dir static sous ma racine de projet, i.e. /var/my/site/static . Avec

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

dans /etc/httpd/conf/httpd.conf , il fonctionne correctement maintenant.

si aucune des réponses ci-dessus ne fonctionne, vous pouvez considérer la vérification de votre configuration de serveur.

4
répondu Darwin 2016-01-03 04:25:48

je suppose que vous utilisez Django1.3 + here.

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 plus, vous devez toujours accéder à vos fichiers statiques en utilisant STATIC URL :

<link rel="stylesheet" href="{{ STATIC_URL }}css/bootstrap.min.css">
2
répondu drewman 2012-10-10 00:36:59

à Django vous avez un avantage de plus pour vos gabarits et c'est vous pouvez relier des statique comme ceci et peut-être que c'est votre problème!

<script src="{% static 'myapp/bootstrap.min.js' %}"></script>
<link href="{% static 'myapp/bootstrap.css' %}" rel="stylesheet" type="text/css"/>

il est mieux d'utiliser

{% statique 'nom du fichier' %}

et son aussi plus facile pour en savoir plus, je me réfère à https://docs.djangoproject.com/en/1.11/intro/tutorial06 /

2
répondu Ebrahim Karimi 2017-05-05 08:56:56

des commentaires ci - dessus-exécuter ce

python manage.py findstatic --verbosity 2 css/styles.css

Pas de correspondance fichier trouvé pour 'css/styles.css'.

regardant dans les endroits suivants:

/Utilisateurs/votrenom/Documents/espace de travail/test/staticfiles

j'ai simplement renommé mon dossier statique en staticfiles et tout allait bien. (Je suis sur osx + django 1.x)

utilisez le mode non sécurisé ne peut pas nuire si vous êtes sur la boite dev locale - sinon vous pouvez toujours avoir des erreurs 404.

python manage.py runserver --insecure

UPDATE

en train de creuser settings.py j'ai trouvé la ligne contrefaite.

STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'staticfiles'),
)
1
répondu johndpope 2018-03-22 14:05:46