web-dev-qa-db-fra.com

Django Admin CSS manquant

Je m'amuse avec la nouvelle commande collectstatic et je la fais fonctionner pour mes pages normales. C’est-à-dire que je peux charger mon css à cet endroit http://localhost:8000/static/css/main.css. Cependant, le css de mon administrateur Django ne semble pas apparaître.

Lorsque je navigue vers l'emplacement du css administratif à http://localhost:8000/static/admin/css/base.css, une page 404 introuvable avec l'erreur suivante: /home/nai/GitProjects/cats/Django-trunk/Django/contrib/admin/media/css/base.css" does not exist. En regardant dans Django-trunk, je n’ai jamais eu le dossier /home/nai/GitProjects/cats/Django-trunk/Django/contrib/admin/media/ pour commencer.

Est-ce bizarre?

Dans tous les cas, dans mon dossier statique, il y a un dossier administrateur avec les dossiers css, img et js qui ont été créés, créé lorsque j'ai exécuté collectstatic et l'URL du fichier base.css semble pointer vers cet emplacement. 

Cela se passe sur mon serveur de développement Django. Voici quelques extraits pour vous aider à chasser les bogues:

urls

 33 # In order for Dev Server to serve media files for the frontend site.
 34 urlpatterns += staticfiles_urlpatterns()
 35 
 36 try:
 37     if settings.DEBUG: # defined in manage.py when the first arg is "runserver"
 38         urlpatterns += patterns('',
 39         (r'^media/(?P<path>.*)$', 'Django.views.static.serve',{'document_root': settings.MEDIA_ROOT}),
 40         (r'^media-admin/(?P<path>.*)$', 'Django.views.static.serve',{'document_root': os.path.join(settings.MEDIA_ROOT, '..', settings.ADMIN_MEDIA_PREFIX)}),
 41         )
 42 except NameError:
 43     pass

Je pense que cela pourrait être quelque chose à voir avec la ligne 40 dans mon fichier URLS mais le changement de media-admin en static/admin n'a pas aidé.

réglages

     58 ADMIN_MEDIA_PREFIX = '/static/admin'
     69 STATIC_ROOT = os.path.join(os.path.abspath(os.path.join(PROJECT_ROOT, '..', MEDIA_DIR, 'static')), '')
     70 
     71 # URL prefix for static files.
     72 # Example: "http://media.lawrence.com/static/"
         73 STATIC_URL = '/static/'
     74 
     75 # Additional locations of static files. Global files are stored in here
     76 STATICFILES_DIRS = (
     77     os.path.join(os.path.abspath(os.path.join(PROJECT_ROOT, '..', 'proj_public', 'static', 'proj')), ''),
     78     )
     79 
37
super9

Django vous recommande de déployer des fichiers statiques avec un serveur Web autre que wsgi.

  1. Dans settings.py , définissez:

STATIC_ROOT = 'static'

  1. Exécutez python manage.py collectstatic, qui copiera les fichiers statiques de l'administrateur Django dans /path/to/project/static/

  2. Configurez votre serveur de fichiers statique. Si vous utilisez Nginx, vous pouvez ajouter cette configuration: 

    location /static/ {                              
        alias /path/to/project/static/;  
        expires modified +1w;                        
    }  
    
  3. Recharger votre serveur web

Vous devriez maintenant avoir accès aux fichiers statiques.

23
jingping.yi

Dans Django 1.4, ADMIN_MEDIA_PREFIX est obsolète. Voici les étapes que j'ai suivies pour rattraper ces changements assez récents dans Django:

  1. dans settings.py, ajoutez Django.contrib.staticfiles à INSTALLED_APPS

  2. dans settings.py define STATIC_URL - l'application staticfiles ne s'exécutera pas sans elle. En utilisant runserver, ils seront traités comme par magie, mais lors du déploiement, il doit s'agir d'un emplacement où ces ressources peuvent être récupérées par un navigateur.

Je pense que c'est tout ce qu'il y avait à faire.

26
Joe Germuska

J'utilise Django 1.4.3

Qu'est-ce qui n'a pas fonctionné pour moi: Peu importe le montant que j'ai modifié ADMIN_MEDIA_PREFIX dans settings.py, je n'ai constaté aucun changement dans le code HTML généré pour les pages d'administration Django. Il est toujours indiqué /media/admin/base.css lorsque je visualise la source.

Ce que DID travaille pour moi. Copié le dossier 'admin' à partir de /Django/contrib/admin/static/ et collé dans le dossier 'media' de mes projets

Maintenant cela fonctionne très bien.

16
nu everest

Vous avez besoin d'une barre oblique finale dans votre paramètre ADMIN_MEDIA_PREFIX.

Changer en:

ADMIN_MEDIA_PREFIX = '/static/admin/' 
2

Cela semble idiot, mais j'avais en fait ce problème et la solution consistait à définir DEBUG=False sur DEBUG=True sur mon environnement de développement local. Lorsque debug est défini sur False, il pense que c'est dans un environnement de production qui repose sur un emplacement pour placer des fichiers statiques, tels que /var/www/html/static, alors que le paramètre debug défini sur True utilise uniquement le répertoire local.

1
Blairg23

J'utilise Chef pour construire automatiquement mon serveur Django sur un serveur AWS Ubuntu. Ce message m'a aidé, mais ce que j'ai fini par faire, c'est d'ajouter le répertoire aux pages statiques de l'administrateur du paquet dans un fichier local_setings.py: https://github.com/jaycrossler/geoq-chef-repo/blob/. master/cookbooks/geoq/templates/default/local_settings.py.erb # L16

(added to local_settings.py or to settings.py):

STATICFILES_DIRS = ('<%= node['geoq']['virtualenv']['location'] %>/local/lib/python2.7/site-packages/Django/contrib/admin/static/',)

Cela a eu pour résultat que local_settings.py a:

STATICFILES_DIRS = ('/var/lib/geoq/local/lib/python2.7/site-packages/Django/contrib/admin/static/',)

Notez que si vous avez déjà d'autres éléments dans votre STATICFILES_DIRS, vous voudrez peut-être ajouter à la liste plutôt que de l'écraser.

0
JayCrossler