2017-02-19 110 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 %} 

我能想到的通過查詢字符串做這件事的hackish的方式,但它會很好,如果我可以使用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

正如我在問題中所寫的,我希望非登錄用戶單擊該購買按鈕,將其重定向到登錄頁面,並顯示一條錯誤消息,告訴他們在購買前需要先登錄。無論如何,第二個想法,這讓我想,我應該可以在購買視圖中做到這一點,而不是如果其他人放在視圖 – Kamal

0

這裏有兩個錯誤的假設。

首先,你不能做任何「從模板」。所有需要用戶交互的東西都必須通過在視圖中處理的某種請求來完成。如果你希望對用戶透明,你可以使用一些Ajax請求,但它仍然需要一個請求。其次,Django的消息傳遞框架不適合在用戶之間發送消息。這些消息存儲在用戶的會話中,並且一個用戶無法修改另一個用戶的會話。 Django有很多第三方消息庫,或者你可以簡單地推出自己的消息庫。

+0

這不是用於在用戶之間發送消息。這只是將用戶重定向到登錄頁面,並顯示一條錯誤消息,告訴他們在購買之前需要先登錄。但無論如何,我有第一點,我應該在目標視圖中而不是模板上。謝謝 – Kamal