web-dev-qa-db-de.com

Django Admin CSS fehlt

Ich habe mich mit dem neuen collectstatic-Befehl herumgespielt und für meine normalen Seiten funktioniert. Das heißt, ich kann meine CSS an dieser Stelle http://localhost:8000/static/css/main.css laden. Die css für meinen Django-Administrator scheint jedoch nicht zu erscheinen.

Wenn ich zum Admin-CSS-Speicherort bei http://localhost:8000/static/admin/css/base.css navigiere, wird eine 404-Seite mit folgendem Fehler nicht gefunden: /home/nai/GitProjects/cats/Django-trunk/Django/contrib/admin/media/css/base.css" does not exist. Bei der Suche in Django-trunk hatte ich noch nie den /home/nai/GitProjects/cats/Django-trunk/Django/contrib/admin/media/-Ordner.

Ist das komisch?

In meinem statischen Ordner befindet sich auf jeden Fall ein Administratorordner mit den dazugehörigen Ordnern css, img und js, der erstellt wurde, als ich collectstatic ausführte und die URL der base.css auf diesen Speicherort verweist. 

Dies geschieht auf meinem Django-Entwicklungsserver. Hier sind einige Ausschnitte, die bei der Fehlersuche helfen sollen:

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

Ich denke, es könnte etwas mit Zeile 40 in meiner URLS-Datei zu tun haben, aber das Ändern von media-admin in static/admin hat nicht geholfen.

die Einstellungen

     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 empfiehlt, dass Sie statische Dateien mit einem anderen Webserver als wsgi bereitstellen.

  1. In settings.py setzen Sie:

STATIC_ROOT = 'static'

  1. Führen Sie python manage.py collectstatic aus, wodurch die statischen Dateien des Django-Administrators nach /path/to/project/static/ kopiert werden.

  2. Konfigurieren Sie Ihren statischen Dateiserver. Wenn Sie Nginx verwenden, können Sie diese Konfiguration hinzufügen: 

    location /static/ {                              
        alias /path/to/project/static/;  
        expires modified +1w;                        
    }  
    
  3. Laden Sie Ihren Webserver neu

Sie sollten jetzt Zugriff auf die statischen Dateien haben.

23
jingping.yi

In Django 1.4 ist ADMIN_MEDIA_PREFIX veraltet. Hier sind die Schritte, die ich befolgte, um diese etwas jüngeren Django-Änderungen nachzuholen:

  1. fügen Sie in settings.pyDjango.contrib.staticfiles zu INSTALLED_APPS hinzu.

  2. in settings.py define STATIC_URL - Die staticfiles-App wird ohne sie nicht ausgeführt. Bei der Verwendung von runserver werden sie auf magische Weise behandelt, aber bei der Bereitstellung muss dies ein Ort sein, an dem diese Ressourcen von einem Browser abgerufen werden können.

Ich denke, das war alles, was dazu gehörte.

26
Joe Germuska

Ich benutze Django 1.4.3

Was für mich NICHT funktionierte: Egal wie sehr ich ADMIN_MEDIA_PREFIX in settings.py bearbeitet habe Ich habe keine Änderung im HTML-Code für die Django-Admin-Seiten festgestellt. Es wird immer /media/admin/base.css angezeigt, wenn ich die Quelle sehe.

Was DID Arbeit für mich. Kopierte den 'admin'-Ordner von /Django/contrib/admin/static/ und fügte ihn in den Medienordner meines Projekts ein

Jetzt klappt es super.

16
nu everest

Sie benötigen einen nachstehenden Schrägstrich in Ihrer ADMIN_MEDIA_PREFIX-Einstellung.

Ändern:

ADMIN_MEDIA_PREFIX = '/static/admin/' 

Es scheint dumm zu sein, aber ich hatte genau dieses Problem und die Lösung bestand darin, DEBUG=False in meiner lokalen Entwicklungsumgebung auf DEBUG=True zu setzen. Wenn Debug auf False festgelegt ist, wird angenommen, dass es sich in einer Produktionsumgebung befindet, in der statische Dateien (z. B. /var/www/html/static) gespeichert werden müssen, während der auf True festgelegte Debug nur das lokale Verzeichnis verwendet.

1
Blairg23

in meinem projekt ist die lösung in settings.py, einstellen:

DEBUG = False # debug false mod not working css

0
xingpei Pang

Ich verwende Chef, um meinen Django-Server auf einem AWS Ubuntu-Server automatisch zu erstellen. Dieser Beitrag hat geholfen, aber ich habe das Verzeichnis zu den statischen Seiten des Paketadministrators in local_setings.py: https://github.com/jaycrossler/geoq-chef-repo/blob/ hinzugefügt. 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/',)

Dies führte zu local_settings.py mit:

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

Wenn Sie bereits andere Elemente in STATICFILES_DIRS haben, möchten Sie möglicherweise an die Liste anhängen, anstatt sie zu überschreiben.

0
JayCrossler

Stellen Sie außerdem sicher, dass AppDirectoriesFinder nicht kommentiert ist, wenn Sie versuchen, Ihre eigene App-Struktur anzupassen. Leider ist es sinnlos, solche Informationen in offiziellen Dokumenten zu suchen.

STATICFILES_FINDERS = [
    'Django.contrib.staticfiles.finders.AppDirectoriesFinder',
]
0
bios