首页 > 解决方案 > 在创建移动应用程序时使用 django-channels 和 django-rest-framework

问题描述

我已经有一个用 Django 编写的项目,并且可以很好地使用 django rest 框架。这个项目实际上是基于 django-oscar 并且我实现了一些其他的特性。我现在正在使用这个应用程序的移动版本,我需要像 Sockets 这样的实时服务器更新,我知道 djnago 频道。我现在的问题是,是否可以将 django-rest 框架与 django-channels 链接起来,因为例如,如果用户在移动应用程序上进行购买,可用产品的数量应该实时减少,或者如果用户添加了产品到购物车用户应该能够立即通过通知徽章获得更多的商品,我觉得这可以通过 django 渠道来实现。那么如何将其余 API 与 django 频道相关联

标签: iosdjangodjango-rest-frameworkdjango-channelsdjango-oscar

解决方案


URLRouter([
    url(r"^longpoll/$", LongPollConsumer),
    url(r"^notifications/(?P<stream>\w+)/$", LongPollConsumer),
    url(r"", AsgiHandler),
])

如果未提供 http 参数,它将默认为 Django 视图系统的 ASGI 接口 channels.http.AsgiHandler,这意味着对于大多数不进行自定义长轮询 HTTP 处理的项目,您可以简单地不指定 http选项并让它以“正常”的 Django 方式工作。

如果您想在长轮询处理程序和 Django 视图之间拆分 HTTP 处理,请使用 URLRouter 并将 channels.http.AsgiHandler 指定为具有 match-everything 模式的最后一个条目。

以上内容来自 https://channels.readthedocs.io/en/latest/topics/routing.html#protocoltyperouter


推荐阅读