Les fichiers statiques Django ne seront pas chargés
je suis un Django novice à travailler sur mon premier projet et avoir un problème avec les fichiers statiques.
J'ai créé un simple auth système à l'aide de django.contrib.auth
constitué de deux modèles: mysite/templates/index.html
et mysite/templates/registration/login.html
. J'ai mondiale du contenu statique dans mysite/static
qui je veux être en mesure d'accéder à tous les modèles rendus par toutes les applications.
mysite/templates/index.html
contient <img src="{{ STATIC_URL }}pics03.jpg"/>
qui rend "static/pics03.jpg"
et charge très bien lorsque je visite l'url localhost:8000/
mysite/templates/registration/login.html
contient <img src="{{ STATIC_URL }}pics03.jpg"/>
qui rend également que "static/pics03.jpg"
et ne se charge pas lorsque je visite l'url "localhost:8000/accounts/login/"
Dans mon urls.py j'ai:
urlpatterns = patterns('',
url(r'^$', 'mysite.views.home'), # plays index.html template
url(r'^accounts/login/$', 'django.contrib.auth.views.login'),
Dans mon settings.py j'ai:
PROJECT_DIR = os.path.dirname(__file__)
STATICFILES_DIRS = (
# Put strings here, like "/home/html/static" or "C:/www/django/static".
# Always use forward slashes, even on Windows.
# Don't forget to use absolute paths, not relative paths.
os.path.join(PROJECT_DIR,'static'),
)
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
)
STATIC_URL = '/static/'
STATIC_ROOT = ''
J'étais sous l'impression que Django devriez être à la recherche pour les mondiaux de contenu statique dans STATICFILES_DIRS, mais il ne trouve pas le contenu statique pour login.html même si je change l'url dans il y à un chemin d'accès absolu à la statique dossier. Quelqu'un peut nous donner un indice sur cette?
source d'informationauteur JimJay
Vous devez vous connecter pour publier un commentaire.
Votre problème est que vous n'êtes pas à l'écoute à l'URL "/static/" nulle part dans votre urls.py
Si vous servez de votre demande par l'intermédiaire d'un serveur web comme apache ou nginx, alors c'est normal que le serveur serait en mesure de gérer les fichiers statiques lui-même.
Pour le développement de Django est livré avec un construit-dans serveur statique
à urls.py à la fin ajouter
Ce que cela fait, c'est ajouter l' /static/url et laissez-vous servir ceux sans un serveur web.
C'est l'équivalent de
certaines personnes vous diront que vous avez besoin d'envelopper l'URL des règles dans une "si les paramètres.DEBUG" pour utiliser la dev-seulement des règles, mais ce n'est pas du tout nécessaire, et en fait je trouve que le fait d'être de mauvais conseils.
Vous avez des problèmes lors de l'utilisation de la construire dans runserver ou vous servez à l'aide d'Apache ou similaires? J'ai lutté avec un peu tout ça. La documentation que j'ai suivi est: https://docs.djangoproject.com/en/dev/howto/static-files/
La deuxième partie est la clé lorsque vous êtes prêt à déployer. Vous devez définir une racine statique (qui sera vide pour commencer) et exécutez le
manage.py collectstatic
commande pour déplacer les fichiers statiques à partir tout au long de votre projet dans ce dossier. Ensuite, vous pouvez les servir à partir de là.Modification de
STATIC_ROOT=''
àSTATIC_ROOT='/'
aider?Il me semble que la seule différence est que
static/pics03.jpg
(chemin relatif) existe sur la page d'accueil, mais pas sur l'autre.Le chemin d'accès absolu
/static/pics03.jpg
existe dans les deux cas. Si l'évolution desSTATIC_ROOT
n'aide pas, il suffit d'ajouter un/
le début de l'url.