2017-02-19 9 views
0

テンプレートファイルの中からdjango message frameworkを使ってメッセージを設定することはできますか?テンプレートファイルからdjangoメッセージを送信

{% 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 %} 

私は、クエリ文字列を使用して、それを行うためのハック方法を考えることができますが、私は、Djangoのメッセージフレームワークを使用することができれば、それはいいだろう。

+0

おそらく、この回答はあなたの問題を解決することができますhttp://stackoverflow.com/a/13257437/5518973 – Aniket

答えて

0

はい、Djangoメッセージングフレームワークを使用して、ビューにメッセージを追加し、それをテンプレートのユーザーに表示する必要があります。ここにあるドキュメントを参照してくださいhttps://docs.djangoproject.com/en/1.10/ref/contrib/messages/

+0

ビューからではなくテンプレートファイルからメッセージを追加する可能性について質問しています – Kamal

+0

なぜあなたはテンプレートでそれを行うには? –

+0

私が質問に書いたように、私はその購入ボタンをクリックしたログインしていないユーザーがログインページにリダイレクトされ、購入前に最初にログインする必要があるというエラーメッセージが表示されます。とにかく、第2の考えでは、私はおそらくビューの上に他のものを置くのではなく、購入ビューでそれを行うべきだと考えました。 – Kamal

0

ここで2つの間違った仮定があります。

まず、「テンプレートから」は実行できません。ユーザーとのやり取りを必要とするものは、ビューで処理される何らかの種類の要求を介して行わなければなりません。これをユーザーに透過的にしたい場合は、Ajaxリクエストを使用することもできますが、依然としてリクエストが必要です。

第2に、Djangoのメッセージングフレームワークは、ユーザー間でメッセージを送信するのに適していません。メッセージはユーザーのセッションに格納され、あるユーザーが別のユーザーのセッションを変更する方法はありません。 Django用のサードパーティのメッセージングライブラリがたくさんあります。あるいは、あなた自身がかなり簡単にロールバックできます。

+0

これは、ユーザー間でメッセージを送信するためのものではありません。購入前にまずログインする必要があるというエラーメッセージが表示され、ユーザーをログインページにリダイレクトするだけでした。しかし、とにかく、私はあなたの最初のポイントを持って、私はターゲットビューではなく、テンプレート上でそれを行う必要があります。ありがとう – Kamal

関連する問題