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 RxJava无重复合并   java在JADE中的同一容器中创建多个代理   带有嵌入式commandLink的java Primefaces数据表   当我必须使用文件读取器Java时,如何从txt文件填充数组??   JavaSpring从数据库和列表中删除记录   java将工作簿对象转换为文件对象   java组织。阿帕奇。火花sql。AnalysisException:无法解析''S.SID`'   java如何将int值从一个活动传递到另一个活动并在TextView中显示?   java如何将pom项目打包为可运行jar   java如何定义标准。不同的根实体实际工作吗?   如何在java中读取文件并将其存储在数组中   通过位操作将Java代码从Java转换为JavaScript代码   粘贴后,java JTextField密钥侦听器落后   java在socket和服务器socket之间发送和接收信息   在Java中处理大型输入流以列出字符串   java如何创建一个示例FastLoad1。csv文件看起来像什么?   可视化和实现椭圆曲线密码的java工具   MS Project Server 2010 Java API   java Jackson错误地序列化了XMLGregorianCalendar