Python 如何从框架中清除Django登录消息
有一个项目设置为Django 1.6和Django allauth。当用户登录django时,会将登录消息保存到用户会话及其堆栈中。当用户到达包含消息框架的任何页面时,登录消息将与其他消息一起显示 由于这个原因,我想在用户登录后从消息队列中删除登录消息。 我试图删除django和allauth的Python 如何从框架中清除Django登录消息,python,django,Python,Django,有一个项目设置为Django 1.6和Django allauth。当用户登录django时,会将登录消息保存到用户会话及其堆栈中。当用户到达包含消息框架的任何页面时,登录消息将与其他消息一起显示 由于这个原因,我想在用户登录后从消息队列中删除登录消息。 我试图删除django和allauth的user\u logged\u insignal中的登录消息,但我发现消息不是在那里创建的 消息删除代码的示例如下所示: # from allauth.account.signals import use
user\u logged\u in
signal中的登录消息,但我发现消息不是在那里创建的
消息删除代码的示例如下所示:
# from allauth.account.signals import user_logged_in
# First I tried allauth signal above.
from django.contrib.auth.signals import user_logged_in
@receiver(user_logged_in)
def user_logged_in_(request, **kwargs):
storage = messages.get_messages(request)
storage.used = True
编辑:下面的解决方法正在运行。但我觉得这样做是不对的
在这之后,我决定做一个变通办法。用户登录后,用户重定向到索引视图。我删除了信号并在索引视图中附加storage.used=True
方法。而且它也不起作用
def clear_messages(request):
storage = messages.get_messages(request)
storage.used = True
def index(request):
clear_messages(request)
return render_to_response('website/index.html', {}, context_instance=RequestContext(request, {}))
来自:
所有消息(如django.contrib.messages中的消息)都可以通过
覆盖各自的模板。如果要禁用消息
只需使用空白模板覆盖消息模板
你必须设置存储空间。used=TrueYes,我在发现自己的愚蠢后进行了更正:)但它也不起作用。注销消息已删除,但登录消息仍在显示。您没有返回请求上下文实例。使用。它与问题相关吗?因为原始代码中存在一个简单的上下文。通过创建两个空文件
templates/account/messages/logged_in.txt
和templates/account/messages/logged_out.txt
@psychok7,我(实际上)能够实现这一点,但我不知道为什么。有人对此有任何官方文件吗?“2个空文件”方法也适用于我,但基本上是禁用一个功能(登录消息)来启用另一个功能(在我的示例中是提交消息)。还有其他选择吗???@psychok7但这不是完美的解决方案。。在我的情况下,用户可以使用任何链接登录。。由系统生成。。并将它们重定向到请求的链接,而不是特定的视图或屏幕。。而且对我来说不起作用。。