django通道的简单单向绑定,并对django rest框架序列化器和websockets提供特定支持。也就是说,使用推送通知丰富现有的api。

drf-channels-oneway-ws的Python项目详细描述


PyPI versionBuild Statuscodecov

DRF信道单向WS

django通道的简单单向绑定,并对django rest框架序列化器和websockets提供特定支持。即用推送通知丰富现有API。

安装

  • pipenv install drf-channels-oneway-wspip install drf-channels-oneway-ws

用法

绑定

fromdjango.dbimportmodelsfromrest_frameworkimportserializersfromchannels_oneway.bindingsimportBindingclassFamily(models.Model):name=models.CharField(max_length=255)classBird(models.Model):name=models.CharField(max_length=255)family=models.ForeignKey('Family',models.CASCADE)classBirdSerializer(serializers.ModelSerializer):classMeta:model=Customerfields=('__all__')classBirdBinding(Binding):model=Birdstream='birds'serializer=BirdSerializer@classmethoddefgroup_names(cls,instance):return[instance.family.name]classFamilyBinding(Binding):"""    example of a binding not using a drf serializer    """model=Familystream='bird-families'@classmethoddefgroup_names(cls,instance):return[instance.name]defserialize_data(self,instance):return{'id':instance.id,'name':instance.name}

现在您要确保有一个websocketconsumer,它在其connect coroutine中执行类似于self.channel_layer.group_add('thrushes', self.channel_name)的操作。 Family.objects.create(name='thrushes')然后将通过关联的websocket发送以下内容:

{"stream":"bird-families","payload":{"action":"create","data":{"id":1,"name":"thrushes"},"model":"your_app.family","pk":1}}

修改("action": "update")或删除("action": "delete")后,您将收到具有相同结构的消息。

注册

为了让绑定注册它们的信号,请确保在某个时刻导入它们。如果使用专用文件,请像从信号一样从^{}导入它。

助手

为了从绑定外部发送ws消息,但使用相同的格式(流+有效负载)(以及drf json编码器),请使用a syncchannels_oneway.utils.groupSend(group, stream, payload)或其同步等价物groupSendSync

贡献

安装

  • git clone git@github.com:evocount/drf-channels-oneway-ws.git
  • cd drf-channels-oneway-ws
  • pipenv install --dev

运行测试

  • pipenv run pytest --cov

许可证

这个项目是根据MIT License授权的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java以编程方式最小化JInternalFrame?   java使用JsonPath将不均匀列表提取为类型化对象   spring如何将java/resources文件获取到InputStream?   Java逻辑错误并不总是存在   java Firebase,更新特定字段   Java stream groupby并同时加入以进行csv导出   java安卓:如果出现任何声音,监听器将录制声音   java如何从多个文件中轮询最后修改的文件并发送到apache camel中的目标端点?   java是否返回多个比较器?   JavaBean IO:Date MMM在CAPS中不解析   当JButton从另一个类单击时,java正在更新JLabel   基类中子类的Java泛型初始化   jakarta ee Java ee制作一个以毫秒为间隔的计时器来发送数据包   json Windows Azure日期格式转换为Java日期