python - Django 如何在特定时间向用户显示消息

标签 python django django-views

我想知道如何在 Django 中的特定时间在屏幕顶部向用户显示一条简单消息。我无法在网上找到任何关于此的信息,所以我想知道我将如何着手做这件事。

我需要用 DateTime 做些什么吗?我会将代码包含在什么 View /模型中?

感谢您提供的任何帮助:)

最佳答案

我仍然没有足够的声誉来发表评论:

所以当你“阅读”这个答案时告诉我,我会删除它。 如果您愿意,可以将感兴趣的部分复制/粘贴到评论中。

我认为确切的用例对于给出正确答案非常重要。这完全取决于您对“特定时间”的确切含义。

  1. 预先知道通知时间(javascript 警报)
  2. 定期询问Django服务器可以决定何时发送消息(长轮询/轮询)
  3. Django 服务器需要执行一些后台任务,并且应该在该任务结束时发送消息

如果您已经提前(在用户打开页面时)知道何时应该发出此通知,那么 Kostas Charitidis 是正确的。 该页面可以只使用 javascript 编写一个计时器,Web 浏览器可以在给定时间向 Django 发出请求以获取显示消息。

要在给定时间将任何内容从 Web 服务器“推送”到 Web 浏览器,需要诸如连续轮询、长轮询、Web 套接字之类的东西。

如果事先不知道通知时间,那么 例如,轮询方法会使用一段 javascript,它会定期(每隔几秒/几分钟/取决于您的用例)查询 Django 服务器是否应获取消息。

长轮询是一种方法,其中 Web 浏览器向服务器执行获取请求,服务器暂停应答,直到消息应该被发送。 (如果请求超时,将发起新的轮询请求) 然而,要(有效地)使用长轮询,您需要在服务器端安装一些特殊的插件来提高效率/资源友好性。

如果您的网站不需要从一些旧的公司(或偏执)防火墙后面访问,那么您可以考虑使用网络套接字(但仍然有一些公共(public)服务/大公司会阻止网络套接字)

django-channels ( https://pypi.org/project/channels/ ) 可以帮助您处理网络套接字通知和一些后台任务

celery ( https://pypi.org/project/celery/ ) 可以帮助您运行定期/延迟/任务,但不包含将消息发送到浏览器的方法。 Celery 是最受推荐的解决方案之一,但(在我看来)设置起来相当痛苦。

根据项目的不同,一些更轻的东西(例如 django-background-tasks https://pypi.org/project/django-background-tasks/ )可能会完成这项工作

您可能会查看 django 消息框架工作 (https://docs.djangoproject.com/en/2.2/ref/contrib/messages/)。但很可能在您的上下文中这不是正确的答案。

关于python - Django 如何在特定时间向用户显示消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57987653/

相关文章:

javascript - 在浏览器中使用 Bootstrap 和 ReactJS

django:临时重定向和永久重定向之间有什么区别?

python - Django 在模板中获取当前 View

python - 如何在 Ubuntu 14.04 安装后运行 Django

python - 如何将 EXIF/其他元数据插入存储在内存缓冲区中的 JPEG?

python - 如何在条件匹配三行的情况下迭代pandas数据框中的选定行?

用于切片的 Python 整数无穷大

python - 在 Elastic Beanstalk 上的 Docker 中部署时命令

django - 同时使用 LoginRequiredMixin 和 UserPassesTestMixin

django - 在 Django 中获取下一个和上一个对象