7 Stimmen

Senden von Nachrichten an den Benutzer über django signals

Verzeihen Sie mir, wenn diese Frage wenig Sinn ergibt; ich habe in letzter Zeit wenig geschlafen.

Ich möchte eine Benachrichtigung an den Benutzer senden, wenn ein Signal über das Nachrichtenmodul von Django ausgelöst wird, aber ich bin ratlos, wie ich das Anfrageobjekt an die Methode messages.success übergeben kann.

Ich tue dies, weil ich einem Benutzer jedes Mal, wenn er ein Abzeichen erhält, davon berichten muss. Wenn ein Nutzer zum Beispiel sein Profil vervollständigt, eine bestimmte Anzahl von Bewertungen abgibt oder eine bestimmte Anzahl von Kommentaren schreibt, erhält er ein Abzeichen. Im Moment ist die einzige Möglichkeit für den Benutzer zu sagen, dass sie ein neues Abzeichen hat, ist auf die Abzeichen-Seite zu gehen, aber ich möchte den Benutzer sanft über das Ereignis zu informieren.

Mit django Benachrichtigungen funktionieren würde, aber das System haben wir in Ort wäre zu schrill (derzeit lädt es eine modale) und teurer, da es die Datenbank trifft.

Vielen Dank im Voraus.

7voto

Rolo Punkte 6060

Das Django-Nachrichten-Framework arbeitet mit HTTP-Anfragen und nicht mit Benutzern (daher funktioniert es auch für anonyme Benutzer). Ein Signal würde nicht wissen, an welche Anfrage eine Nachricht angehängt werden soll, und wahrscheinlich wäre der betreffende Benutzer zu diesem Zeitpunkt nicht einmal angemeldet.

Es klingt so, als ob das, was Sie zu tun versuchen, besser für etwas wie django-notification geeignet wäre, http://github.com/jtauber/django-notification/ .

2voto

Duncan Parkes Punkte 1862

Sie können das Nachrichten-Framework nicht direkt in einem Signal verwenden, da Sie keinen Zugriff auf eine Anfrage haben.

Sie könnten dies wahrscheinlich umgehen, indem Sie eine Ansicht, die der Benutzer wahrscheinlich häufig aufruft, mit einer Funktion verknüpfen, die nach neuen Abzeichen sucht und eine Nachricht erstellt. Auch wenn der Benutzer die Nachricht nicht auf der nächsten Seite erhält, die er nach dem Erhalt des Abzeichens aufruft, erhält er sie auf der ersten Seite, die er nach der Seite aufruft, auf der die Nachricht erstellt wurde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X