Django Admin CSS manquant

J'ai joué avec la nouvelle commande collectstatic et l'ai fait fonctionner pour mes pages normales. C'est-à-dire que je suis capable de charger mon css à cet emplacement http://localhost:8000/static/css/main.css. Cependant, le css pour mon administrateur django ne semble pas apparaître.

Lorsque je navigue vers l'emplacement CSS admin à http://localhost:8000/static/admin/css/base.css, je reçois 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.

C'est bizarre?

En tout cas, dans mon dossier statique, il y a un dossier admin avec les dossiers CSS, img et js qui ont été créés lorsque j'ai couru collectstatic et l'url de la base.css semble pointer vers cet emplacement.

Cela se passe sur mon serveur de développement django. Voici quelques extraits pour aider à la chasse aux bogues:

Url

 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 URL, mais changer media-admin en static / admin n'a pas aider.

Les Paramètres

     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 
36
demandé sur super9 2011-08-30 14:15:17

7 réponses

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

  1. dans settings.py , Ensemble:

STATIC_ROOT = 'static'

  1. Exécutez python manage.py collectstatic, qui copiera les fichiers statiques/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.

20
répondu jingping.yi 2018-08-29 10:20:03

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

  1. Dans settings.py, ajoutez django.contrib.staticfiles pour INSTALLED_APPS

  2. Dans settings.py define STATIC_URL - le staticfiles application ne fonctionnera pas sans elle. Lors de l'utilisation de runserver, ils seront gérés comme par magie, mais lorsque vous déployez, 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
répondu Joe Germuska 2013-09-23 15:27:46

J'utilise Django 1.4.3

Ce qui n'a pas fonctionné pour moi: Peu importe combien J'ai édité ADMIN_MEDIA_PREFIX dans settings.py Je n'ai remarqué aucun changement dans le HTML généré pour les pages D'administration de Django. Il dit toujours / media / admin / base.css quand je vois la source.

Ce qui a fonctionné 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
répondu nu everest 2015-10-04 18:01:05

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

Changer pour:

ADMIN_MEDIA_PREFIX = '/static/admin/' 
2
répondu Yuji 'Tomita' Tomita 2011-08-30 17:19:37

J'utilise chef pour construire automatiquement mon serveur django sur un serveur AWS Ubuntu. Ce post a aidé, mais ce que j'ai fini par faire était d'ajouter le répertoire aux pages statiques d'admin de paquet dans un 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 donné lieu à local_settings.py ayant:

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
répondu JayCrossler 2014-01-26 20:21:50

Cela semble stupide, mais j'ai eu ce problème exact et la solution était de définir DEBUG=False à 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 endroit pour placer des fichiers statiques, tels que /var/www/html/static, alors que le debug défini sur True utilise simplement le répertoire local.

0
répondu Blairg23 2018-09-24 22:59:55

Dans settings.py Ne pas utiliser tuple pour le

STATICFILES_DIRS =( OS.chemin.join(BASE_DIR, 'statique'), )

Vous devriez utiliser list, comme ceci

STATICFILES_DIRS =[ OS.chemin.join(BASE_DIR, 'statique'), ]

-1
répondu zijie lin 2016-06-14 11:06:26