【问题标题】:Using django-channels with django-rest-framework in the creation of mobile application在创建移动应用程序时使用 django-channels 和 django-rest-framework
【发布时间】:2018-08-01 02:54:25
【问题描述】:

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

【问题讨论】:

  • 没什么技术性,但我认为从业务角度来看(取决于您可能销售的商品,这会改变),通常商品可能会添加到购物车,但不会一直到结账.因此,在这种情况下,建议不要直接影响产品的可用性。
  • 您可能会发现github.com/hishnash/djangochannelsrestframework 很有用,因为这将帮助您通过 WebSocket 连接共享一些现有的 DRF 序列化程序等。 [免责声明我是这个包的作者]
  • 真棒包肯定会深入它。希望你能继续努力。

标签: ios django django-rest-framework django-channels django-oscar


【解决方案1】:
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 指定为具有匹配所有模式的最后一个条目。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-08
    • 2015-05-21
    • 1970-01-01
    相关资源
    最近更新 更多