简介:许多朋友询问Django如何打电话给消费者。本文的首席CTO笔记将为您提供详细的答案,以供所有人参考。我希望这对每个人都会有所帮助!让我们一起看看!
做一个隐喻。如果A是服务器,则B是客户端,现在您必须在家吃热锅。尽管A说您可以来,但是B认为您必须带上一些东西,所以他去了市场。
我先去了蔬菜店。b想买一些菠菜,但我担心这个家庭已经可用,所以我打电话给
B:“我带一些菠菜,对吗?”
答:“好”
然后挂断电话。一段时间后,我到达了水上区域
B:“我带一点虾,对吧?”
答:“不”
...重复了很多之后,突然发现他确实做了一些少的准备,所以一个要求B打电话给B
答:“我忘了准备蘸酱,你买东西,然后不要先挂断电话”
Em
答:“买一瓶葡萄酒”
Em
这是Websocket
Django还应为Websocket提供支持,尽管这似乎不是更好。我们可以通过渠道实现Websocket连接
上面示例之类的场景是合适的场景
例如,例如,例如,聊天室,每个人发送的新闻都应实时显示在他人的屏幕上。
例如,数据监视,波动状态必须在屏幕上实时显示,而不是依靠用户刷新。
您需要安装频道,asgi_redis,asgiref,channels_redis。后三个可能无法安装,尚不清楚。
install_apps需要添加“频道”。应该注意的是,这是因为它是一个列表,其顺序有顺序。最好将其添加到第一个。
在这里,我们的频道通过REDIS实现,必须在settings.py中配置
这里也有一个小坑。官方文档中的主机不是这种格式,而是“ URI”模式,但是如果您设置了特殊符号('#$%'),如果设置了redis密码,您将发现REDIS的URI可以t直接使用它。在此期间,我尝试了各种方法,但我无法尝试。然后我去了Github打开一个问题。结果,作者说我们是由Aioredis建立联系的。
然后我找到了这种方式。
常规WSGI不支持WebSocket,因此您需要配置ASGI
asgi_application ='Project.Routing.Application'
像WSGI的配置一样,这是指项目文件夹下的Routing.py文件的应用
在这里,我建议您使用本官方教程的教程。有更多的悲剧。互联网上有许多渠道使用指南。他们中的大多数都有一个简单的聊天室或其他东西。因为频道在2.0升起后改变了一些方法,这些教程基本上是1.x版本。
简而言之,首先,StartApp称为聊天。如果我们没有正面和后端分离,则分别有两个html:索引和房间的模板。
创建一个新的Consuamers.py来编写WebSocket方法
如上所述,连接和断开连接的含义就像函数名称。因为这是一个聊天室,所以新闻应该分享同一聊天室中的人们。使用ROOM_GROUP_NAME区分其所在的通道。
接收和chat_message是消息的处理。当用户发送消息时,前端将通过websocket发送消息。Personnel将接收此消息推动,将接收到前端推动,然后在屏幕上显示。
定义Websocket的地址
类似于django的URL(cumputers.py与views.py相似),新routing.py是在同一级别上新创建的
统一使用WS/区分Websocket的连接
其余的常规页面配置与Django相同
Views.py:
urls.py:
注意:如果网站是http,则连接使用WS,如果是https,则将其修改为WSS
找到自己留下的信息,我对前端不了解
如果本地,Runserver很好,但是您仍然必须在线更改“开始”方法以处理高并发。
传统的UWSGI不支持WebSocket。
Gunicorn似乎同时支持Websocket,但性能不太好
在这里我们使用达芙妮
您需要在此处打开额外的服务,并且负责处理Websocket。
在入口中
FreeMarker使用FTL标签使用指令,具有3个FTL标签,这与HTML标签完全相似。
1.启动标签:#Directivename参数
2,结束标签:/#directivianame
3,空标签:#Directivename参数/
使用Python提供的JSON软件包在Django模型的定义中为Tojson添加了一种方法。使用django模型访问_meta.fields获取相关属性。示例如下::
1
2
3
4
5
6
7
8
9
10
11
12
类别类别(Models.Model):
autoid = model.autofield(primary_key = true)
电子邮件= models.charfield(max_length = 150,空白= false)
comtype = models.charfield(max_length = 20,空白= false)
catName = models.charfield(max_length = 150,空白= false)
def __unicode __(self):
返回'%s'%(self.catname)
def tojson(self):
导入JSON
然后使用Django查找数据并将其转换为JSON。代码如下:
1
2
行= models.category.objects.get(autoid = 23)
打印行。
1.使用所需的环境
PIP安装Django-JSON-RPC
第二,在Django项目设置配置文件中注册“ JSONRPC”
3.在视图中致电
第四,注册路由
5. RPC呼叫比较API呼叫
有关更多内容,请单击我的博客查看它,欢迎访问。
这个基于教程
XTERM.JS:前端模拟壳终端的库。当用户输入键时,数据将发送到后端
Paramiko:python下的SSH2包装库,您可以使用他远程连接到主机
创建一个app.name webssh
将应用程序添加到设置。
修改应用程序下的apps.py
修改应用程序下的__init__.py
访问可以连接到主页
apps/websss/cumputer.py
apps/websss/rooting.py
交叉多应用URL
遇到的问题是:与协作联系时,用户将添加到频道组并将命令发送到此频道组。该渠道的所有用户都可以接收它以实现协作的功能,但是可以从self.ssh_channel返回的数据。可能是存在和期望之间的区别,尤其是最高命令。示例如下,我不知道如何解决!
参考链接:
【gevent库】
结论:以上是首席执行官注释为每个人汇编的Django的内容。