Wenn ich eine Fehler-Ausnahme-E-Mail von meiner Django-Site bekomme, wäre es nützlich, die Benutzer- und/oder UserProfile-Informationen für den aktuell angemeldeten Benutzer zu sehen. Wie füge ich dies zu den Django-Site-Ausnahmefehler-E-Mails hinzu?Wie man eingeloggten Benutzer an Django Exception Fehlermeldungen anfügt?
Antwort
Django hängt Rep (Anfrage) am Ende der E-Mail an. Die Verwendung des Standard wsgi Entwicklungs-Server können Sie die als
angemeldeten Benutzer finden‚LOGNAME‘: ‚myuser‘,
Dies kann in einigen E-Mail-Clients ausgeblendet werden, wie es in spitzen Klammern gewickelt ist.
<WSGIRequest
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
...
'LOGNAME': 'myuser',
...
wsgi.run_once': False,
'wsgi.url_scheme': 'http',
'wsgi.version': (1, 0)}>
Auch können Sie eine eigene Middleware implementieren, die die process_exception Methode implementiert:
process_exception (self, Anfrage, Ausnahme)
Anfrage ist ein Httprequest-Objekt. Ausnahme ist ein Exception-Objekt, das von der View-Funktion ausgelöst wird.
Django ruft process_exception() auf, wenn eine Ansicht eine Ausnahme auslöst. process_exception() sollte entweder None oder ein HttpResponse-Objekt zurückgeben. Wenn ein HttpResponse-Objekt zurückgegeben wird, wird die Antwort an den Browser zurückgegeben. Andernfalls wird die standardmäßige Ausnahmebehandlung gestartet.
Die Middleware wird in umgekehrter Reihenfolge während der Antwortphase ausgeführt, einschließlich process_exception. Wenn eine Ausnahme-Middleware eine Antwort zurückgibt, werden die Middleware-Klassen oberhalb dieser Middleware überhaupt nicht aufgerufen.
@ jsamsa's Antwort scheint aufgrund von Änderungen in Django nicht mehr wahr zu sein (zumindest bekomme ich kein "LOGNAME" -Feld in Fehler-E-Mails).
Ich poste eine Alternative, um die vollständige django HTML-Fehlerseite per E-Mail zu erhalten. Details auf diesem sind hier: https://docs.djangoproject.com/en/dev/topics/logging/#django.utils.log.AdminEmailHandler
und diese ticket helfend weist darauf hin, dass Sie dies tun können:
LOGGING['handlers']['mail_admins']['include_html'] = True
Mit 'include_html' bekommst du in der Tat ziemlich HTML per E-Mail, aber wo finde ich den Benutzernamen des Benutzers, der den Fehler verursacht hat? Zumindest konnte ich es nicht finden. 'logname' ist nicht Teil dessen, was ich gesendet habe. Außerdem bin ich sicher, dass der Benutzer angemeldet war, da die Seite, auf der der Fehler angezeigt wurde, nur für angemeldete Benutzer sichtbar ist. – SaeX
Von Django Version 1.10 ab, diese nativ unterstützt wird: https://docs.djangoproject.com/en/dev/releases/1.10/ sehen.
Anforderungsbenutzer zur Debugansicht hinzugefügt.
- 1. Django Anzahl der heute eingeloggten Benutzer
- 2. Django bildet und initialisiert den eingeloggten Benutzer?
- 3. Wie man Text an SVG anfügt
- 4. Wie man Expression.Lambda an irgendeinen Besitzertyp anfügt?
- 5. Separate Datenbankeinstellungen basierend auf eingeloggten Django 1.8 Benutzer
- 6. Wie man einen NSString an einen anderen NSString anfügt
- 7. Wie man ein Nummernzeichen an eine Nummer anfügt
- 8. Elasticsearch - wie man Begriff anfügt?
- 9. Wie man einen Listener an ein Optionsfeld anfügt
- 10. Wie man Int an die neue Datenstruktur anfügt (Swift 3)
- 11. Wie man eine Scrollbar an ein Text-Widget anfügt?
- 12. Wie man Elemente an eine geschachtelte Ebene anfügt
- 13. Wie man eine MDF-Datei an Crystal Reports anfügt
- 14. Netsuite: Wie man benutzerdefinierte Felder an Kundenaufträge anfügt
- 15. Wie man den Android-Emulator an ADB anfügt?
- 16. Yii2. Wie man Bootstrap Drop-Down an ein Modell anfügt?
- 17. Wie man tr an den Anfang der Tabelle anfügt
- 18. Wie man ImageView an den rechten Rahmen von RelativeLayout anfügt
- 19. Wie bekomme ich eine Liste aller eingeloggten Benutzer in Yii2?
- 20. Django Form Fehlermeldungen Schlüssel
- 21. Wie man einen Prozess in gdb anfügt
- 22. Liste der eingeloggten Benutzer in Wordpress?
- 23. Django Unhandled Exception
- 24. Magento, wie man den Block anfügt
- 25. CakePHP Validierung Fehlermeldungen - wie man sie weitergeben?
- 26. Wie man normalen Text an einen TextBlock anfügt, der bereits eine Bindung an seine Texteigenschaft hat?
- 27. So speichern Sie temporäre Daten, die keine eingeloggten Benutzer hat
- 28. Django - Login und Weiterleitung an Benutzer Profilseite
- 29. Nachrichten an Django Benutzer lokalisierte Sending
- 30. Wie verhindert man, dass Hibernate den Hostnamen an den Benutzernamen mit MySQL anfügt
+1 für Vorschlag von Middleware ... tatsächlich verwenden wir diesen Ansatz ziemlich erfolgreich. –
Dies funktioniert nicht mehr für mindestens Django 1.9 (ältere Versionen könnten ebenfalls betroffen sein). – SaeX