J'exécute le serveur de développement de Django (runserver
) sur ma machine locale (Mac OS X) et je n'arrive pas à charger les fichiers CSS.
Voici les entrées pertinentes dans settings.py:
STATIC_ROOT = '/Users/username/Projects/mysite/static/'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
'/Users/thaymore/Projects/mysite/cal/static',
)
STATICFILES_FINDERS = (
'Django.contrib.staticfiles.finders.FileSystemFinder',
'Django.contrib.staticfiles.finders.AppDirectoriesFinder',
#'Django.contrib.staticfiles.finders.DefaultStorageFinder',
)
INSTALLED_APPS = (
# other apps ...
'Django.contrib.staticfiles',
)
Dans mon views.py, je demande le contexte:
return render_to_response("cal/main.html",dict(entries=entries),context_instance=RequestContext(request))
Et dans mon modèle, le {{ STATIC_URL }}
s'affiche correctement:
<link type="text/css" href="{{ STATIC_URL }}css/main.css" />
Se transforme en:
<link type="text/css" href="/static/css/main.css"/>
C'est là que se trouve le fichier. J'ai également exécuté collectstatic
pour m'assurer que tous les fichiers ont été collectés.
J'ai également les lignes suivantes dans mon urls.py:
from Django.contrib.staticfiles.urls import staticfiles_urlpatterns
urlpatterns += staticfiles_urlpatterns()
Je suis nouveau à Django donc il me manque probablement quelque chose de simple - j'apprécierais toute aide.
Lisez attentivement ceci: https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/
Est Django.contrib.staticfiles
dans votre INSTALLED_APPS
dans settings.py
?
Est DEBUG=False
? Si c'est le cas, vous devez appeler runserver
avec le --insecure
paramètre:
python manage.py runserver --insecure
collectstatic
n'a aucune incidence sur la diffusion de fichiers via le serveur de développement. C'est pour collecter les fichiers statiques dans un seul emplacement STATIC_ROOT
pour que votre serveur Web les trouve. En fait, exécuter collectstatic
avec votre STATIC_ROOT
défini sur un chemin dans STATICFILES_DIRS
est une mauvaise idée. Vous devez vérifier deux fois pour vous assurer que vos fichiers CSS existent déjà.
Avec Django 1.11.x +, vous devez configurer les fichiers statiques dans settings.py
as,
STATIC_URL = '/static/' # the path in url
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
et l'utiliser avec une balise de modèle statique,
{% load static %}
<link rel="stylesheet" href="{% static 'css/bootstrap.css' %}">
Une autre chose simple à essayer est d'arrêter, puis de redémarrer le serveur, par exemple.
$ python manage.py runserver
J'ai regardé les autres réponses, mais le redémarrage du serveur a fonctionné pour moi.
Ajoutez le code suivant à votre settings.py
:
STATICFILES_DIRS = [
os.path.join(BASE_DIR, "static"),
]
Après cela, créez le dossier statique dans le répertoire racine de votre projet.
Pour charger les fichiers statiques sur des modèles, utilisez:
{% load static %}
<img src="{% static "images/index.jpeg" %}" alt="My image"/>
Sont-ils absents de votre settings.py
? Je colle un des paramètres de mon projet:
TEMPLATE_CONTEXT_PROCESSORS = ("Django.contrib.auth.context_processors.auth",
"Django.core.context_processors.debug",
"Django.core.context_processors.i18n",
"Django.core.context_processors.media",
"Django.core.context_processors.static",
"Django.contrib.messages.context_processors.messages")
C'est aussi ce que j'ai dans mon urls.py
:
urlpatterns += patterns('', (
r'^static/(?P<path>.*)$',
'Django.views.static.serve',
{'document_root': 'static'}
))
ajoutée
PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))
STATICFILES_DIRS = ( os.path.join(PROJECT_ROOT, "static"), )
et supprimé STATIC_ROOT
de settings.py
, Ça a marché pour moi
Ces étapes fonctionnent pour moi, voir juste Charger des fichiers statiques (CSS, JS et images) dans Django
J'utilise Django 1.10.
static
au même niveau que settings.py
, le chemin de mon settings.py
est ~/djcode/mysite/mysite/settings.py
, donc ce répertoire est ~/djcode/mysite/mysite/static/
;static_dirs
et static_root
dans static
, soit ~/djcode/mysite/mysite/static/static_dirs/
et ~/djcode/mysite/mysite/static/static_root/
;écrivez settings.py
comme ceci:
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.10/howto/static-files/
STATIC_URL = '/static/'
STATIC_ROOT = os.path.join(BASE_DIR, 'mysite', 'static', 'static_root')
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'mysite', 'static', 'static_dirs'),
)
faites cette commande $ python manage.py collectstatic
dans Shell;
créez un dossier css
dans static_dirs
et placez-le dans votre propre fichier .css
, le chemin de votre fichier css est ~/djcode/mysite/mysite/static/static_dirs/css/my_style.css
;
changer la balise <link>
dans le fichier .html
: <link rel="stylesheet" type="text/css" href="{% static 'css/my_style.css' %}">
,
Enfin, le chemin de ce lien est http://192.168.1.100:8023/static/css/my_style.css
Bingo!
DEBUG = True
dans mes paramètres locaux l'a fait pour moi.
ajouter le suivant dans settings.py
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Vous aviez le même chemin dans STATICFILES_DIRS ET STATIC_ROOT, j'ai rencontré le même problème et ci-dessous était l'exception -
ImproperlyConfigured: le paramètre STATICFILES_DIRS ne doit pas contenir le paramètre STATIC_ROOT
Pour le local, vous n'avez pas besoin de STATICFILES_DIRS, car de toute façon vous n'avez pas besoin d'exécuter collectstatic. Une fois que vous l'avez commenté, cela devrait fonctionner correctement.
Vous pouvez simplement définir STATIC_ROOT selon que vous exécutez sur votre hôte local ou sur votre serveur. Pour identifier cela, reportez-vous à cette post .
Et vous pouvez réécrire votre configuration STATIC_ROOT en:
import sys
if 'runserver' in sys.argv:
STATIC_ROOT = ''
else:
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'
Ajoute ça "Django.core.context_processors.static",
processeur de contexte dans votre settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
"Django.core.context_processors.static",
)
J'ai le même problème (serveur ununtu 16.04).
Cela m'a aidé
python manage.py collectstatic --noinput
Si vous définissez DEBUG = FALSE, vous devez suivre les étapes
Dans votre fichier urls.py: ajoutez cette ligne
from Django.views.static import serve
url(r'^media/(?P<path>.*)$', serve,{'document_root': settings.MEDIA_ROOT}),
url(r'^static/(?P<path>.*)$', serve,{'document_root': settings.STATIC_ROOT}),
Avez-vous ajouté dans vos modèles:
{% load staticfiles %}
Cela charge ce qui est nécessaire, mais pour une raison quelconque, j'ai expérimenté que cela fonctionne parfois sans cela ... ???
Vérifiez si votre application principale (où se trouve le répertoire statique) est incluse dans votre INSTALLED_APPS.
Les fichiers sont recherchés à l'aide des viseurs activés. La valeur par défaut consiste à rechercher dans tous les emplacements définis dans STATICFILES_DIRS et dans le répertoire "statique" des applications spécifiées par le paramètre INSTALLED_APPS.