it-swarm.com.de

warum meine Django-Admin-Site nicht den CSS-Stil hat 

ich mache eine Django-Admin-Site mit Django-Entwicklungsversion

aber es hat keinen CSS-Stil:

alt text

was kann ich machen .

vielen Dank

61
zjm1126

Django stellt keine statischen Dateien zur Verfügung. Sie müssen angeben, wo sich die Dateien befinden.

Das ADMIN_MEDIA_PREFIX in der Datei settings.py zeigt Django an der richtigen Stelle.

Da Sie die Entwicklungsversion verwenden, benötigen Sie das dev-spezifische Dokument für statische Dateien . Adams Link führt Sie zur Version 1.2.

14
Evan Porter

Nach dem Einrichten von STATIC_ROOT und STATIC_URL müssen Sie möglicherweise ausführen 

python manage.py collectstatic
50
David Mann

ADMIN_MEDIA_PREFIX ist jetzt veraltet, verwenden Sie stattdessen STATIC_URL. Die Einstellung sollte STATIC_URL = '/static/' in settings.py übernehmen. Versuchen:

import os.path  import sys

PROJECT_ROOT = os.path.normpath(os.path.dirname(__file__))

und dann: 

STATIC_ROOT = os.path.join(PROJECT_ROOT, 'static')
STATIC_URL = '/static/'

Funktioniert mit Django 1.4 vor dem Alpha-SVN-16920.

16
Shamar

Nach dem Django-Buch-Tutorial bin ich auch auf dieses Problem gestoßen. In Kapitel 5 | Installation des Modells gibt das Buch an, wenn auf den Standardwert INSTALLED_APPS- .__ verwiesen wird. "Kommentieren Sie alle sechs Zeichenketten vorübergehend aus, indem Sie ein Hash-Zeichen (#) voranstellen." http://www.djangobook.com/de/2.0/chapter05.html

Dann, in Kapitel 6, fordert das Buch den Leser auf, 4 dieser 6 Zeilen zu kommentieren. "" Beachten Sie, dass wir diese vier INSTALLED_APPS-Einträge in Kapitel 5 auskommentiert haben. Kommentieren Sie sie jetzt. " 

Die Statcifiles-Zeile ist jedoch das, was erforderlich ist, um CSS auf der Administrationsseite wiederherzustellen. "Django.contrib.staticfiles",

9
Chris SH

Ich habe mehrere andere Threads gelesen, die versucht haben, das Problem zu beheben ... und auf einen Alias ​​wie in anderen Threads zurückgegriffen. Dies setzt voraus, dass Ihre eigene benutzerdefinierte Anwendung statische Dateien korrekt bereitstellt, was darauf hinweist, dass Ihre STATIC_ROOT und STATIC_URL die richtigen Einstellungen haben. 

STATIC_ROOT = ''
STATIC_URL = '/static/'

Dann (aus Ihrem statischen Verzeichnis):

[email protected]:/srv/www/mysite.com/app_folder/static$ Sudo ln -s /usr/local/lib/python2.7/dist-packages/Django/contrib/admin/static/admin/ admin

Hoffe, das hilft jemandem ... zu diesem Thema gibt es viele Threads . :(

6
Taylor

In /project_name/project_name/settings.py müssen Sie STATIC_URL einstellen, um Ihrer Site mitzuteilen, welche URL für statische Dateien verwendet werden soll. 

Stellen Sie dann STATIC_ROOT auf einen Ordner in Ihrem Dateisystem ein, der nicht mit einem Ihrer Verzeichnisse in STATICFILES_DIRS list identisch ist.

Sobald STATICFILES_ROOT eingestellt ist, führen Sie python manage.py collectstatic aus dem Projektverzeichnis aus.

Dadurch werden alle statischen Admin-Dateien und alle Dateien in anderen Ordnern in der Liste STATICFILES_DIRS kopiert. Im Wesentlichen werden dadurch alle statischen Dateien an einem Ort abgelegt, sodass Sie sie bei der Bereitstellung Ihrer Site auf Ihr CDN verschieben können. Wenn Sie wie ich sind und kein CDN haben, haben Sie zwei Möglichkeiten:

  1. Fügen Sie den Ordner, den Sie als STATIC_ROOT festgelegt haben, zur Liste STATICFILES_DIRS hinzu. Dadurch können die statischen Dateien in Django alle statischen Dateien finden.
  2. Verschieben Sie den gesamten Ordner der statischen Dateien an eine andere Stelle in Ihrem Dateisystem und weisen Sie STATICFILES_DIRS an, um diesen neuen Speicherort einzuschließen.

Ich mache mit dieser Antwort keine Kommentare, es ist genau so, wie ich es mit meinem Webserver für kleine Projekte entwickeln konnte. Ich erwarte, dass Sie ein CDN wollen, wie Django vorschlägt, wenn Sie größere Maßstäbe setzen.

UPDATE: Ich bin gerade auf dieses Problem gestoßen und diese Methode hat nicht ganz das gemacht, was ich denke, Sie wollen. Was am Ende für mich funktionierte, war, nachdem ich collectstatic ausgeführt hatte. Ich habe einfach die statischen Admin-Dateien, die in STATICFILES_ROOT abgelegt wurden, in das Verzeichnis kopiert, das ich für meine eigenen statischen Dateien verwendet hatte. Das hat das Problem für mich gelöst.

3
Brad P.

Wenn Sie einen Apache-Server zum Hosten Ihrer Django-Site verwenden, müssen Sie sicherstellen, dass der statische Alias ​​auf Ihr/-Verzeichnis auf site/site_media/static/zeigt. Wenn sich Ihre statischen Dateien im Verzeichnis/site zu site/site/site_media/static/befinden, funktioniert die vorherige Konfiguration des Apache-Alias ​​nicht.

2
Yulun

Neben vielen anderen Antworten, die nützlich waren, hatte ich ein Problem, das noch nicht bemerkt wurde. Nach dem Upgrade von Django 1.3 auf 1.6 enthielt mein Verzeichnis für statische Dateien einen symbolischen Link zu den statischen Dateien der Django-Administratoren.

Mein settings.py wurde konfiguriert mit:

STATICFILES_DIRS = (
    '/var/www/static/my-dev',
)

Nach dieser Antwort

Django erwartet nun die statischen Admin-Dateien unter der URL /Administrator/.

Ich hatte einen symbolischen Link /var/www/static/my-dev/admin, der wie folgt festgelegt wurde:

admin -> /usr/local/lib/python2.7/dist-packages/Django/contrib/admin/media/

Dieser Ort ist in Django 1.6 nicht mehr vorhanden, daher wurde der Link aktualisiert:

admin -> /usr/local/lib/python2.7/dist-packages/Django/contrib/admin/static/admin/

Und jetzt funktioniert meine Admin-Site einwandfrei.

2
cod3monk3y

Während ich dem Django-Tutorial folgte, hatte ich ein ähnliches Problem. In meinem Fall war das Problem der Mimetyp, der vom Entwicklungsserver beim Bereitstellen von CSS-Dateien verwendet wurde.

Der Mimetyp war 'application/x-css', der zu folgender Warnmeldung in Chrome führte (auf der Registerkarte "Netzwerk" der Developer Tools):

Ressource wird als Stylesheet interpretiert, jedoch mit dem MIME-Typ .__ übertragen. application/x-css: " http://127.0.0.1:8000/static/admin/css/base.css "

Die Problemumgehung, die ich gefunden habe: Ändern des zu bedienenden Mimetyps durch Hinzufügen der folgenden Zeilen zur Datei manage.py der Django-Webapp:

import mimetypes
mimetypes.init()
mimetypes.types_map['.css'] = 'text/css'

Hinweis: arbeitete für mich mit Django 1.7.4 auf Python 2.7 und Chrome 40.0

1
Gio

Stellen Sie sicher, dass sich 'Django.contrib.staticfiles' in Ihrem INSTALLED_APPS in den Einstellungen befindet

1
RedRory

Wenn Sie in settings.py einen Wert für STATICFILES_DIRS festgelegt haben und der angegebene Ordner nicht vorhanden ist oder sich an einem falschen Speicherort befindet, führt dies dazu, dass der Admin kein Styling hateg Definiert STATICFILES_DIRS = (os. path.join (BASE_DIR, "statisch")) und der statische Ordner ist nicht vorhanden 

0
cormacio100

Befindet sich das Problem auf einem Entwickler-/Test-/Produktserver und verwendet Nginx, führen Sie die folgenden Schritte aus.

  • setze die configs in settings.py wie folgt

    STATIC_URL = '/static/'
    
    BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    
  • Führen Sie den folgenden Befehl aus, um CSS- und JS-Dateien im statischen Ordner zu erstellen

    $ python manage.py collectstatic
    
  • konfiguration in/etc/nginx/sites-enabled/example (Nginx), um statische Dateien bereitzustellen

    location /static/ {
            alias /project/root/folder/static/;
    }
    
0
SuperNova

Nachdem ich Tausende von Vorschlägen ausprobiert hatte, fand ich schließlich eine Lösung, die half. Hier ist, was ich ausprobiert habe und was ich verwendet habe ... Ich benutze Django-1.11 und den Nginx-Webserver .. Zuerst stellte ich sicher, dass meine CSS/Js-Dateien nicht 404 in der Browserkonsole erhalten. Danach sah ich eine Warnung 

Ressource wird als Stylesheet interpretiert, jedoch mit Mime-Text/plain übertragen

Ich habe die base.html in Admin-Vorlagen gefunden und entfernt 

type="text/css"

und jetzt sieht die Zeile so aus:

<link rel="stylesheet"  href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}" /> 

Dies hat das Problem für mich behoben.

0
Rahul Singal

Mein Problem wurde gelöst, indem eine neue virtuelle Umgebung für das Projekt erstellt wurde, bevor ich den allgemeinen Python-Interpreter auf Systemebene verwendete.

$ mkvirtualenv myproject

Referenz: https://docs.djangoproject.com/de/2.1/howto/windows/

0
Khateeb321

run: python manage.py collectstatic

Fügen Sie diese Zeile zu Vhost hinzu, das sich unter /etc/Apache2/sites-available/000-default.conf befindet

Alias ​​/ static/admin//var/www/html/example.com/static/admin

Hier ist die gesamte Vhost-Einstellung für das Setup von Django

<VirtualHost *:80>
        ServerName gautam.tech
        ServerAlias www.gautam.tech

        WSGIDaemonProcess gautam.tech python-path=/var/www/html/gautam.tech python-home=/var/www/html/gautam.tech/venv
        WSGIProcessGroup gautam.tech
        #Your static files location
        Alias /static /var/www/html/gautam.tech/static
        Alias /media/ /var/www/html/gautam.tech/media
        Alias /static/admin/ /var/www/html/gautam.tech/static/admin

        <Directory /var/www/html/gautam.tech/static>
                Require all granted
        </Directory>

        <Directory /var/www/html/gautam.tech/media>
                       Require all granted
        </Directory>

        WSGIScriptAlias / /var/www/html/gautam.tech/myproject/wsgi.py

        DocumentRoot /var/www/html/gautam.tech
        <Directory /var/www/html/gautam.tech>
                <Files wsgi.py>
                        Require all granted
                </Files>
        </Directory>

        CustomLog /var/www/html/gautam.tech/access.log combined
        ErrorLog /var/www/html/gautam.tech/error.log
</VirtualHost>

Das wird sicher funktionieren!

0
Kundan roy

Das gleiche Problem, das mir bei der Entwicklung einer Site in Django-1.10.5 und Python-2.7.13 begegnet ist. Aber in meinem Firefox-51 und Chrome konnte die Anmeldeseite zwar die CSS erhalten, aber immer noch kein Styling. Aber seltsamerweise funktionierte es am IE-8.

Ich habe versucht, alles Mögliche zu tun, was hier erwähnt wird und zu meinen SW-Versionen passt. Keiner hat gearbeitet.

Aber als ich die gleiche Seite auf einem anderen System ausprobierte, auf dem Python-2.7.8 installiert war, funktionierte es ..

Gerade geschrieben, wenn es jemandem helfen kann ... 

edit: später fand ich heraus, dass in python-2.7.13 das Schreiben der folgenden zwei Zeilen in settings.py (plus das Löschen des Cache des Browsers) den Trick ausgeführt hatte

import mimetypes
mimetypes.add_type("text/css", ".css", True)
0
Nikhil Saxena