【问题标题】:Is there a way to send push notifications with Django有没有办法用 Django 发送推送通知
【发布时间】:2018-07-12 14:41:25
【问题描述】:

您好,我想知道有没有办法使用 Django 向用户发送推送通知。

我有一个接受/拒绝假期要求的网站。

当用户发送休假请求时,我的 Django 应用会向 CEO 发送电子邮件,通知他有新的休假请求。

当 CEO 接受请求时,它会向用户发送电子邮件,表明请求已被接受。

但由于 CEO 每天会收到大量电子邮件,而且他几乎看不到我的电子邮件,所以我想在他打开浏览器以查看来自我的网站的请求等待批准/拒绝的通知时发出浏览器通知。

有没有图书馆可以为我做到这一点,

我已经尝试过django-webpush,但我无法让它工作,即使我 遵循所有步骤。

【问题讨论】:

  • 不是我做过的事情,只是一个想法,您可以在后端创建一个方法并向其发送请求以检查电子邮件。也许在浏览器打开时每 60 秒发送一次请求?
  • 我希望它发送通知,即使网站没有在像 facebook 这样的选项卡中打开,当您打开像 chrome 这样的浏览器时也会发送通知@TPHughes
  • 通常你可以使用 Django Channels。
  • @WillemVanOnsem 我检查了它们,但我根本不明白它们是如何工作的我已经搜索了整个互联网,但如果你有一些资源可以分享会很好

标签: django python-3.x push-notification


【解决方案1】:

是的,您可以,因为您知道您的用户至少访问过您的服务器一次。签出这个库

https://github.com/jazzband/django-push-notifications

编辑将提供有关它的更多信息

如果您希望从后端收到一个响应到您的后端,您可以编写一些观察程序来接收新数据,或创建一个插件,或使用套接字,甚至让您的前端在一段时间内向后端发送一个调用以检查是否有新消息...

分手吧

1 - 观察者

使用观察者你可以观察你的后端的任何变化......从头开始构建它我有点“难”,你可以使用一些已经拥有它的现代前端框架,如 Angular、React、Vue......从您的后端捕获新的收入消息并在您的浏览器中创建通知实例并将其发送给您的用户(我想他们必须保持页面打开才能做到这一点......我不是 100% 确定)

2 - 插件

您可以构建一个插件来添加到您的浏览器并从您的服务器接收数据...因为您已经在浏览器中更容易使用浏览器功能

3 - 套接字

从前端到后端进行 2 种方式通信的常用方法,最常用于聊天和周围的事情,只需在这 2 方之间创建一个通信通道,您就可以从前端或后端发送和接收消息

4 - 肮脏的方式

如果您没有时间像对待质量一样来实现它,您可能会走脏路,只需在您的页面中设置一个 ajax 以每 5 分钟检查一次新消息的后端吗?或多或少...如果发现任何新数据(当然,您必须像上面的任何其他建议一样在后端处理它),然后您在浏览器中创建一个新通知并显示给您的用户...

我确定有很多库已经为你做了大部分事情,所以只需搜索一下并进行测试,直到找到适合你需要的任何东西

【讨论】:

  • 还没有,但在逻辑上很简单......如何控制界面是Javascript。所以你可以设置显示通知,你唯一需要的是一个套接字或配置对后端的ajax调用以接收更新的数据......唯一的问题是你的前端期望来自后端的新数据......因为只有现代JS 框架这样做...常规路径是前端调用后端没有其他方式
  • Socket 看起来更容易做到这一点......考虑一个网络聊天......你在客户端接收来自后端某人的消息......所以你将接收数据而不是接收消息在前端触发通知类
  • 我的 github 上确实有一些纯 javascript 项目来显示通知,让我抓住它
  • github.com/Diegow3b/Browser-Notification-ES6 扔掉你收到的数据然后开心
  • 如果你会使用sockets,你可以使用Tornado或者socketIo...很久没有看到一个有socketio的项目了... Tornado比较常用django-tornado-websockets.readthedocs.io/en/latest
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-01-06
  • 1970-01-01
  • 2016-08-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多