2017-02-19 70 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