2010-08-10 16 views
7

Verzeihen Sie mir, wenn diese Frage wenig Sinn macht; Ich habe in letzter Zeit wenig geschlafen.Senden von Nachrichten an den Benutzer über django Signale

Ich möchte eine Benachrichtigung an den Benutzer senden, wenn ein Signal über djangos Nachrichtenmodul ausgelöst wird, aber ich weiß nicht, wie ich das Anforderungsobjekt an die Methode messages.success übergeben soll.

Ich mache das, weil, wenn ein Benutzer ein Abzeichen bekommt, ich ihm davon erzählen muss. Wenn zum Beispiel ein Benutzer sein Profil vervollständigt, eine festgelegte Anzahl von Bewertungen vornimmt oder eine bestimmte Anzahl an Kommentaren erstellt, wird ein Abzeichen belohnt. 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 informieren.

Die Verwendung von Django-Benachrichtigungen würde funktionieren, aber das System, das wir an Ort und Stelle haben, wäre zu krass (derzeit lädt es ein Modal) und teurer, da es die Datenbank trifft.

Vielen Dank im Voraus.

+1

Wahrscheinlich möchten Sie das nicht tun. Bitte erklären Sie, warum Sie so etwas versuchen. Zeigen Sie einfach die Nachricht in Ihrer Vorlage ist die übliche Lösung. Was versuchst du zu machen? –

+0

"Wann immer ein Benutzer ein Abzeichen bekommt"? Was? –

Antwort

7

Das Django-Nachrichtenframework arbeitet mit HTTP-Anfragen und nicht mit Benutzern (daher auch für anonyme Benutzer). Ein Signal hätte keine Ahnung, an welche Anfrage eine Nachricht angehängt werden sollte, und die Wahrscheinlichkeit, dass der betreffende Benutzer zu der Zeit wahrscheinlich nicht einmal angemeldet war, ist wahrscheinlich.

Es klingt wie das, was Sie versuchen, wäre besser für etwas wie Django-Benachrichtigung, http://github.com/jtauber/django-notification/.

+0

Danke, das ist genau das, was ich suche. – IntrepidDude

+0

Ugh ... nach einer erneuten Überprüfung scheint die Django-Benachrichtigungsroute weniger verlockend zu sein. Die Minimierung von Abfragen an die Datenbank hat Priorität. – IntrepidDude

+0

Haha, ich habe nur vier Jahre gebraucht, um zu erkennen, dass dies alle Anforderungen erfüllt, die in meiner Frage spezifiziert sind. – IntrepidDude

2

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

Sie könnten wahrscheinlich umgehen, indem Sie eine Sicht, dass der Benutzer wahrscheinlich zu häufig mit etwas, das nach neuen Badges sucht, und eine Nachricht erstellt wird. Auch wenn sie die Nachricht auf der nächsten Seite, die nach Erhalt des Badges angezeigt wurde, nicht erhalten würden, würden sie sie auf der ersten Seite erhalten, die nach der Seite angezeigt wird, auf der die Nachricht erstellt wird.

Verwandte Themen