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
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'), )
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!
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.
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.
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.
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">
à 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 /
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'),
)