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
Django empfiehlt, dass Sie statische Dateien mit einem anderen Webserver als wsgi bereitstellen.
STATIC_ROOT = 'static'
Führen Sie python manage.py collectstatic
aus, wodurch die statischen Dateien des Django-Administrators nach /path/to/project/static/
kopiert werden.
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;
}
Laden Sie Ihren Webserver neu
Sie sollten jetzt Zugriff auf die statischen Dateien haben.
In Django 1.4 ist ADMIN_MEDIA_PREFIX
veraltet. Hier sind die Schritte, die ich befolgte, um diese etwas jüngeren Django-Änderungen nachzuholen:
fügen Sie in settings.py
Django.contrib.staticfiles
zu INSTALLED_APPS
hinzu.
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.
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.
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.
in meinem projekt ist die lösung in settings.py
, einstellen:
DEBUG = False # debug false mod not working css
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.
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',
]