【问题标题】:Add a message on all views in Django在 Django 中的所有视图上添加消息
【发布时间】:2021-04-29 15:58:45
【问题描述】:

我想使用 Django 消息框架向访问我们网站的用户显示消息。我们的想法是在他们查看的第一页上显示它,然后在用户会话的其余部分不再显示它。

我想它会像这样工作:

if request.session.get('show_welcome_message', True):
    messages.info(request, 'Welcome to our site!')
    request.session['show_welcome_message'] = False

我的问题是,添加它以使其显示在所有网站页面上的最佳位置在哪里?

而且,有没有更好的方法来做这样的事情,利用 Django 的本机消息传递向用户显示一条消息,如果他们关闭消息,他们在同一会话中就不会再看到?

【问题讨论】:

    标签: django


    【解决方案1】:

    您可以为此创建一个middleware


    我们的想法是在他们查看的第一个页面上显示它,然后在用户会话的其余部分不再显示它。

    如果您对会话的想法是每次打开新的浏览器/标签页。此行可能无济于事: request.session['show_welcome_message'] = False

    这是因为django的会话在关闭浏览器后仍然存在事件。

    我建议在客户端旁边使用浏览器的SessionStorage 和一些 ajax 来可靠地检查它是否是第一次访问。

    【讨论】:

    • 谢谢,凯尔。我不介意人们在同一会话中返回该站点并且没有看到该消息,只要他们单击关闭它即可。更重要的是继续显示消息,直到它被点击关闭,然后在同一个会话中不再显示它。
    • 那没问题。此外,如果您不知道,消息不会在下一次请求后持续存在。因此可能必须继续在每个请求上添加欢迎消息,然后使用一些 ajax 请求在单击关闭时设置show_welcome_message
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-10
    • 2018-08-29
    相关资源
    最近更新 更多