Ich habe mir andere Fragen angesehen und kann es nicht herausfinden ...
Ich habe Folgendes getan, um die django-debug-toolbar zu installieren:
- pip install django-debug-toolbar
- zu Middleware-Klassen hinzugefügt:
MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', # Uncomment the next line for simple clickjacking protection: # 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'debug_toolbar.middleware.DebugToolbarMiddleware', )
3 INTERNAL_IPS hinzugefügt:
INTERNAL_IPS = ('174.121.34.187',)
4 debug_toolbar zu installierten Apps hinzugefügt
Ich erhalte keine Fehler oder ähnliches und die Symbolleiste wird auf keiner Seite angezeigt, nicht einmal auf dem Administrator.
Ich habe sogar das Verzeichnis der debug_toolbar-Vorlagen zu meinem hinzugefügt TEMPLATE_DIRS
python
django
django-debug-toolbar
AlexBrand
quelle
quelle
INTERNAL_IPS
korrekt ist. Eine Möglichkeit, dies zu überprüfen, besteht darin, eine Ansicht zu druckenrequest.META['REMOTE_ADDR']
und diese dann zu Ihrer Ansicht hinzuzufügenINTERNAL_IPS
.'*'
die internen IPs hinzuzufügen , aber das funktioniert nicht. Sie müssen bestimmte IPs eingeben.Antworten:
Dumme Frage, aber du hast sie nicht erwähnt, also ... Was ist geplant
DEBUG
? Es wird nicht geladen, es sei dennTrue
.Wenn es immer noch nicht funktioniert, fügen Sie auch '127.0.0.1' hinzu
INTERNAL_IPS
.AKTUALISIEREN
Dies ist ein letzter verzweifelter-Effort bewegen, sollten Sie nicht haben dies zu tun, aber es wird deutlich zeigen , wenn es nur einige Konfigurationsprobleme oder ob es einig größeres Problem.
Fügen Sie settings.py Folgendes hinzu:
Dadurch werden alle Überprüfungen per Debug-Symbolleiste effektiv entfernt, um festzustellen, ob sie selbst geladen werden sollen oder nicht. es wird immer nur geladen. Lassen Sie dies nur zu Testzwecken, wenn Sie es vergessen und damit starten, sehen alle Ihre Besucher auch Ihre Debug-Symbolleiste.
Eine explizite Konfiguration finden Sie auch in den offiziellen Installationsdokumenten hier .
EDIT (17.06.2015):
Anscheinend hat sich die Syntax für die Nuklearoption geändert. Es ist jetzt in einem eigenen Wörterbuch:
Ihre Tests verwenden dieses Wörterbuch.
quelle
runserver
stellen Sie sicher, dass Sie es neu starten. Verdammt, starten Sierunserver
auch neu. Stellen Sie sicher, dass Ihre Änderungen an settings.py tatsächlich gespeichert / festgeschrieben wurden. Möglicherweise möchten Sie versuchen, * .pyc-Dateien zu entfernen. In * nix können Sie dies einfach mitfind . -name "*.pyc" -exec rm {} \;
dem Projektstamm tun . Führen Siepython manage.py shell
abschließendfrom django.conf import settings
den Wert von aus , führen Sie ihn aus und überprüfen Sie ihnsettings.INSTALLED_APPs
.INTERNAL_IPS
, sind diese für den Client und nicht für den Server (Django). Mit anderen Worten, Sie geben Ihre IP-Adresse ein, damit Sie die Debug-Symbolleiste sehen können, unabhängig davon, auf welcher IP die Site ausgeführt wird.SHOW_TOOLBAR_CALLBACK = lambda x: True
collectstatic
, um alles erscheinen zu lassen.Die Debug-Symbolleiste möchte, dass die IP-Adresse in request.META ['REMOTE_ADDR'] in der Einstellung INTERNAL_IPS festgelegt wird. Geben Sie eine Druckanweisung in einer Ihrer Ansichten wie folgt ein:
Und dann laden Sie diese Seite. Stellen Sie sicher, dass sich IP in Ihrer INTERNAL_IPS-Einstellung in settings.py befindet.
Normalerweise würde ich denken, dass Sie die Adresse leicht anhand der IP-Adresse Ihres Computers ermitteln können, aber in meinem Fall verwende ich den Server in einer virtuellen Box mit Portweiterleitung ... und wer weiß, was passiert ist. Obwohl es in ifconfig auf der VB oder meinem eigenen Betriebssystem nirgendwo zu sehen war, war die IP, die im Schlüssel REMOTE_ADDR angezeigt wurde, der Trick, die Symbolleiste zu aktivieren.
quelle
INTERNAL_IPS
und es begann zu funktionieren.Wenn alles andere in Ordnung ist, kann es auch sein, dass Ihrer Vorlage ein explizites schließendes
<body>
Tag fehlt.quelle
DEBUG_TOOLBAR_CONFIG = {'INSERT_BEFORE':'</head>'}
funktioniertFür die aktuelle stabile Version 0.11.0 müssen die folgenden Bedingungen erfüllt sein, damit die Symbolleiste angezeigt wird:
Einstellungsdatei:
DEBUG = True
INTERNAL_IPS
um die IP-Adresse Ihres Browsers im Gegensatz zur Serveradresse anzugeben. Wenn Sie lokal surfen, sollte dies seinINTERNAL_IPS = ('127.0.0.1',)
. Wenn Sie remote surfen, geben Sie einfach Ihre öffentliche Adresse an .INSTALLED_APPS = (..., 'debug_toolbar',)
MIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware', ...)
. Es sollte so früh wie möglich in die Liste aufgenommen werden.Vorlagendateien:
text/html
</html>
Tag habenStatische Dateien:
Wenn Sie statischen Inhalt bereitstellen, stellen Sie sicher, dass Sie CSS, JS und HTML wie folgt erfassen:
Hinweis zu kommenden Versionen der Django-Debug-Symbolleiste
Neuere Entwicklungsversionen haben Standardeinstellungen für die Einstellungspunkte 2, 3 und 4 hinzugefügt, was das Leben jedoch etwas einfacher macht, da bei jeder Entwicklungsversion Fehler auftreten. Ich fand heraus, dass die neueste Version von git zu einem
ImproperlyConfigured
Fehler beim Ausführen von nginx / uwsgi führte.So oder so, wenn Sie die neueste Version von github run installieren möchten:
Sie können auch ein bestimmtes Commit klonen, indem Sie Folgendes tun:
quelle
Ich habe alles versucht, von der Einstellung
DEBUG = True
über die EinstellungINTERNAL_IPS
der IP-Adresse meines Clients bis hin zur manuellen Konfiguration der Django Debug-Symbolleiste (beachten Sie, dass neuere Versionen alle Konfigurationen automatisch vornehmen, z. B. das Hinzufügen der Middleware und der URLs). Auf einem Remote-Entwicklungsserver funktionierte nichts (obwohl es lokal funktionierte). Das einzige, was funktioniert hat, war die Konfiguration der Symbolleiste wie folgt:Dies ersetzt die Standardmethode, die entscheidet, ob die Symbolleiste angezeigt werden soll, und gibt immer true zurück.
quelle
Docker
Wenn Sie mit einem Django-Server in einem Docker- Container mit Docker entwickeln, funktionieren die Anweisungen zum Aktivieren der Symbolleiste nicht. Der Grund hängt mit der Tatsache zusammen, dass die tatsächliche Adresse, die Sie hinzufügen
INTERNAL_IPS
müssten, etwas Dynamisches sein wird, wie z. B. 172.24.0.1. Anstatt zu versuchen, den Wert von dynamisch festzulegenINTERNAL_IPS
, besteht die einfache Lösung darin, die Funktion zu ersetzen, die die Symbolleiste aktiviertsettings.py
, z. B.:Dies sollte auch für andere dynamische Routing-Situationen wie Vagrant funktionieren.
Hier sind einige Details für Neugierige. Der Code in django_debug_tool, der bestimmt, ob die Symbolleiste angezeigt werden soll, untersucht den Wert
REMOTE_ADDR
wie folgt :Wenn Sie den Wert von
REMOTE_ADDR
aufgrund Ihres dynamischen Docker-Routings nicht kennen, funktioniert die Symbolleiste nicht. Mit dem Docker-Netzwerkbefehl können Sie beispielsweise die dynamischen IP-Werte anzeigendocker network inspect my_docker_network_name
quelle
Ich habe die Symbolleiste einfach perfekt funktionieren. Mit diesen Konfigurationen:
DEBUG = True
INTERNAL_IPS = ('127.0.0.1', '192.168.0.1',)
DEBUG_TOOLBAR_CONFIG = {'INTERCEPT_REDIRECTS': False,}
MIDDLEWARE_CLASSES
:Ich hoffe, es hilft
quelle
base.py
hinzuzufügen, möchten Sie diese möglicherweise zu Ihrerlocal.py
: hinzufügenMIDDLEWARE_CLASSES = ('debug_toolbar.middleware.DebugToolbarMiddleware',) + MIDDLEWARE_CLASSES
.Fügen Sie
10.0.2.2
Ihrem INTERNAL_IPS unter Windows hinzu, es wird intern mit Vagrant verwendetINTERNAL_IPS = ('10 .0.2.2 ',)
Das sollte funktionieren.
quelle
Ich hatte das gleiche Problem und löste es schließlich nach einigem googeln.
In INTERNAL_IPS benötigen Sie die IP-Adresse des Clients .
quelle
Eine andere Sache, die dazu führen kann, dass die Symbolleiste ausgeblendet bleibt, ist, wenn die erforderlichen statischen Dateien nicht gefunden werden können. Die Vorlagen debug_toolbar verwenden das Vorlagen-Tag {{STATIC_URL}}. Stellen Sie daher sicher, dass sich in Ihren statischen Dateien ein Ordner mit dem Namen debug toolbar befindet.
Der Befehl collectstatic management sollte dies bei den meisten Installationen berücksichtigen.
quelle
Ich habe die Konfiguration von pydannys Ausstecher-Django ausprobiert und es hat bei mir funktioniert:
Ich habe es nur durch Hinzufügen
'debug_toolbar.apps.DebugToolbarConfig'
von Django 1.7 geändert, anstatt'debug_toolbar'
wie in den offiziellen Dokumenten der Django-Debug-Symbolleiste erwähnt .quelle
Eine Ergänzung zu früheren Antworten:
Wenn die Symbolleiste nicht angezeigt wird, aber in HTML geladen wird (überprüfen Sie das HTML Ihrer Website in einem Browser, scrollen Sie nach unten).
Das Problem kann sein, dass statische Dateien der Debug-Symbolleiste nicht gefunden werden (dies können Sie dann auch in den Zugriffsprotokollen Ihrer Site sehen, z. B. 404-Fehler für /static/debug_toolbar/js/toolbar.js).
Es kann dann folgendermaßen behoben werden (Beispiele für Nginx und Apache):
nginx config:
Apache-Konfiguration:
Oder:
Weitere Informationen zu collectstatic finden Sie hier: https://docs.djangoproject.com/de/dev/ref/contrib/staticfiles/#collectstatic
Oder verschieben Sie den Ordner debug_toolbar der statischen Dateien debug_toolbar manuell in Ihren festgelegten Ordner für statische Dateien
quelle
In meinem Fall war es ein weiteres Problem, das hier noch nicht erwähnt wurde: Ich hatte GZipMiddleware in meiner Liste der Middlewares.
Da bei der automatischen Konfiguration der Debug-Symbolleiste die Middleware der Debug-Symbolleiste ganz oben steht, wird nur das komprimierte HTML angezeigt, zu dem die Symbolleiste nicht hinzugefügt werden kann.
Ich habe GZipMiddleware in meinen Entwicklungseinstellungen entfernt. Das manuelle Einrichten der Konfiguration der Debug-Symbolleiste und das Platzieren der Middleware nach GZip sollte ebenfalls funktionieren.
quelle
gzip_page
wird die Symbolleiste ausgeblendet . docs.djangoproject.com/de/2.0/topics/http/decorators/…In meinem Fall musste ich nur die Python-kompilierten Dateien entfernen (
*.pyc
)quelle
Django 1.8.5:
Ich musste der Datei url.py des Projekts Folgendes hinzufügen, um die Anzeige der Debug-Symbolleiste zu erhalten. Danach wird die Debug-Symbolleiste angezeigt.
Django 1.10: und höher:
Vergessen Sie auch nicht, die debug_toolbar in Ihre Middleware aufzunehmen. Die Debug-Symbolleiste ist meist in einer Middleware implementiert. Aktivieren Sie es in Ihrem Einstellungsmodul wie folgt: (Django neuere Versionen)
Middleware im alten Stil: (_CLASSES-Schlüssel müssen in der Middleware vorhanden sein)
quelle
Dies war bei diesem bestimmten Autor nicht der Fall, aber ich hatte nur Probleme damit, dass die Debug-Symbolleiste nicht angezeigt wurde, und nachdem ich alles getan hatte, worauf sie hingewiesen hatten, stellte ich fest, dass es sich um ein Problem mit der MIDDLEWARE-Bestellung handelte. Es könnte also funktionieren, die Middleware früh in die Liste aufzunehmen. Meins ist zuerst:
MIDDLEWARE_CLASSES = ( 'debug_toolbar.middleware.DebugToolbarMiddleware', 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'dynpages.middleware.DynpageFallbackMiddleware', 'utils.middleware.UserThread', )
quelle
Sie müssen sicherstellen, dass Ihre Vorlagen ein schließendes Tag enthalten.
Mein Problem ist, dass meine Vorlagen keine regulären HTML-Tags enthalten. Ich zeige den Inhalt nur im Klartext an. Ich habe es gelöst, indem ich jede HTML-Datei von base.html geerbt habe, die ein Tag hat.
quelle
Für mich war dies so einfach wie das Eingeben
127.0.0.1:8000
in die Adressleiste, anstatt dasslocalhost:8000
dies anscheinend nicht mit INTERNAL_IPS übereinstimmte.quelle
Ich habe das gleiche Problem, ich habe es gelöst, indem ich mir das Fehlerprotokoll des Apache angesehen habe. Ich habe den Apache auf Mac OS X mit mod_wsgi ausgeführt. Der Tamplete-Ordner der debug_toolbar wurde nicht geladen
Protokollbeispiel:
Ich füge diese Zeile einfach meiner VirtualHost-Datei hinzu:
quelle
Ich hatte das gleiche Problem mit Vagrant. Ich habe dieses Problem gelöst, indem ich
::ffff:192.168.33.1
wie im folgenden Beispiel zu INTERNAL_IPS hinzugefügt habe .Denken Sie daran, dass dies
192.168.33.10
die IP in meinem privaten Netzwerk in Vagrantfile ist.quelle
Ich hatte dieses Problem und musste die Debug-Symbolleiste von der Quelle installieren.
Version 1.4 hat ein Problem, bei dem es ausgeblendet ist, wenn Sie PureCSS und anscheinend andere CSS-Frameworks verwenden.
Dies ist das Commit, das das behebt.
In den Dokumenten wird die Installation von der Quelle aus erläutert.
quelle
Für alle, die Pycharm 5 verwenden - das Debuggen von Vorlagen funktioniert dort in einigen Versionen nicht. In 5.0.4 behoben, betroffene Versionen - 5.0.1, 5.0.2 Problem beim Auschecken
Verbringen Sie viel Zeit, um das herauszufinden. Vielleicht hilft jemand
quelle
In dem Code, an dem ich gearbeitet habe, wurden während der Bearbeitung der Hauptanforderung mehrere kleine Anforderungen gestellt (dies ist ein sehr spezifischer Anwendungsfall). Es waren Anfragen, die von demselben Django-Thread bearbeitet wurden. Die Django-Debug-Symbolleiste (DjDT) erwartet dieses Verhalten nicht und enthält die Symbolleisten von DjDT für die erste Antwort. Anschließend wird der Status für den Thread entfernt. Als die Hauptanforderung an den Browser zurückgesendet wurde, war DjDT nicht in der Antwort enthalten.
Lektionen gelernt: DjDT speichert seinen Status pro Thread. Nach der ersten Antwort wird der Status für einen Thread entfernt.
quelle
Was mich dazu gebracht hat, ist ein veralteter Browser!
Es wurde festgestellt, dass einige Stylesheets aus der Debug-Symbolleiste geladen werden, und es wurde vermutet, dass es sich möglicherweise um ein Front-End-Problem handelt.
quelle
Eine dumme Sache hat mich dazu gebracht, dass Sie, wenn Sie Apache wsgi verwenden, daran denken, die .wsgi-Datei zu berühren, um die Neukompilierung Ihres Codes zu erzwingen. Verschwenden Sie nur 20 Minuten meiner Zeit, um den dummen Fehler zu beheben :(
quelle