2017-02-19 2 views
0

Ist es möglich, eine Nachricht mit django message framework aus einer Vorlagedatei zu setzen?Django-Nachricht aus einer Vorlagendatei senden

{% if not userIsLoggedIn %} 
    <a href="{% url 'login' %}" class="btn btn-primary">Buy</a> 
    {# I want to send message to the user who click this buy button on the login page #} 
{% elif not game_bought and game.price != 0 %} 
    <form action="/buy" method="POST"> 
     <input class="btn btn-primary" type="submit" value="Buy"> 
    </form> 
{% endif %} 

ich eine hackish Art und Weise denken kann, es zu tun durch Query-String verwenden, aber es wäre schön, wenn ich Djangos Nachricht Framework verwenden könnte.

+0

Möglicherweise kann diese Antwort Ihr Problem lösen, http://StackOverflow.com/a/13257437/5518973 – Aniket

Antwort

0

Ja, Sie sollten das Django Messaging-Framework verwenden, um die Nachricht in der Ansicht hinzuzufügen und sie dann dem Benutzer in der Vorlage anzuzeigen. Sehen Sie die Dokumentation hier https://docs.djangoproject.com/en/1.10/ref/contrib/messages/

+0

Sorry, aber ich frage nach der Möglichkeit zum Hinzufügen von Nachrichten aus der Vorlagendatei statt aus der Sicht – Kamal

+0

Warum würden Sie brauchen um das in der Vorlage zu tun? –

+0

Wie ich in der Frage geschrieben habe, möchte ich nicht eingeloggte Benutzer, die diese Schaltfläche kaufen klicken, wird auf die Anmeldeseite mit einer Fehlermeldung weitergeleitet, dass sie sich erst anmelden müssen, bevor sie kaufen. Wie auch immer, auf den zweiten Gedanken brachte es mich dazu, dass ich dachte, dass ich das wahrscheinlich in der Kaufansicht tun sollte, anstatt sonst auf die Ansicht zu setzen. – Kamal

0

Es gibt zwei falsche Annahmen hier.

Erstens können Sie nichts "von der Vorlage" tun. Alles, was eine Benutzerinteraktion erfordert, muss über eine Art von Anfrage erfolgen, die in einer Ansicht verarbeitet wird. Wenn Sie möchten, dass dies für den Benutzer transparent ist, könnten Sie eine Ajax-Anfrage verwenden, aber es muss immer noch eine Anfrage sein.

Zweitens ist Djangos Messaging-Framework nicht zum Senden von Nachrichten zwischen Benutzern geeignet. Die Nachrichten werden in der Sitzung des Benutzers gespeichert und es gibt keine Möglichkeit für einen Benutzer, die Sitzung eines anderen Benutzers zu ändern. Es gibt viele Messaging-Bibliotheken von Drittanbietern für Django, oder Sie können Ihre eigenen ziemlich einfach rollen.

+0

Dies ist nicht zum Senden von Nachrichten zwischen Benutzern. Es war nur um Benutzer auf Login-Seite mit einer Fehlermeldung, dass sie sich erst einloggen müssen, bevor sie kaufen. Aber wie auch immer, ich habe deinen ersten Punkt, ich sollte es in der Zielansicht anstatt auf der Vorlage tun. Vielen Dank – Kamal

Verwandte Themen