当前位置: 首页 > news >正文

做折扣的网站长沙手机网站建设公司哪家好

做折扣的网站,长沙手机网站建设公司哪家好,wordpress页面文章,苏州网站建设模版文章目录 准备工作创建 Django 项目创建应用程序配置项目编写 Consumer编写路由创建 URL 路由运行应用用户认证消息持久化显示历史消息结论 Django Channels 是 Django 的一个扩展#xff0c;允许在 Web 应用中添加实时功能#xff0c;例如 Websockets、HTTP2 和其他协议。本… 文章目录 准备工作创建 Django 项目创建应用程序配置项目编写 Consumer编写路由创建 URL 路由运行应用用户认证消息持久化显示历史消息结论 Django Channels 是 Django 的一个扩展允许在 Web 应用中添加实时功能例如 Websockets、HTTP2 和其他协议。本文将介绍如何使用 Django Channels 构建一个简单的实时聊天应用程序。 准备工作 首先确保你已经安装了 Django 和 Channels。你可以使用以下命令安装 pip install django channels创建 Django 项目 使用以下命令创建一个新的 Django 项目 django-admin startproject realtime_chat然后进入项目目录 cd realtime_chat创建应用程序 创建一个新的 Django 应用程序 python manage.py startapp chat配置项目 在 settings.py 文件中添加 Channels 的配置 # settings.pyINSTALLED_APPS [...channels,chat, ]ASGI_APPLICATION realtime_chat.routing.application创建一个新的 ASGI 路由文件 routing.py # routing.pyfrom channels.routing import ProtocolTypeRouterapplication ProtocolTypeRouter({})编写 Consumer 在 consumers.py 文件中编写一个简单的 Consumer # chat/consumers.pyfrom channels.generic.websocket import AsyncWebsocketConsumerclass ChatConsumer(AsyncWebsocketConsumer):async def connect(self):await self.accept()async def disconnect(self, close_code):passasync def receive(self, text_data):pass编写路由 在 routing.py 文件中添加路由配置 # routing.pyfrom channels.routing import ProtocolTypeRouter, URLRouter from channels.auth import AuthMiddlewareStack from django.urls import path from chat.consumers import ChatConsumerapplication ProtocolTypeRouter({websocket: AuthMiddlewareStack(URLRouter([path(chat/, ChatConsumer.as_asgi()),])), })创建 URL 路由 在 urls.py 文件中添加 URL 路由 # chat/urls.pyfrom django.urls import path from . import consumerswebsocket_urlpatterns [path(chat/, consumers.ChatConsumer.as_asgi()), ]在主项目的 urls.py 中包含 Chat 应用的路由 # realtime_chat/urls.pyfrom django.urls import path, includeurlpatterns [...path(chat/, include(chat.urls)), ]运行应用 运行 Django 服务器 python manage.py runserver现在你可以通过访问 http://localhost:8000/chat/ 来测试你的实时聊天应用了。 用户认证 首先我们将使用 Django 自带的认证系统来处理用户认证。在 settings.py 中启用认证系统 # settings.pyINSTALLED_APPS [...django.contrib.auth,django.contrib.contenttypes,... ]AUTHENTICATION_BACKENDS [django.contrib.auth.backends.ModelBackend, ] 然后我们需要修改 ChatConsumer以便处理用户认证 # chat/consumers.pyfrom channels.generic.websocket import AsyncWebsocketConsumer from django.contrib.auth.models import AnonymousUserclass ChatConsumer(AsyncWebsocketConsumer):async def connect(self):self.user self.scope[user]if isinstance(self.user, AnonymousUser):await self.close()else:await self.accept()async def disconnect(self, close_code):passasync def receive(self, text_data):pass现在只有经过身份验证的用户才能连接到聊天消费者。 消息持久化 我们希望用户在重新加载页面后能够看到之前的聊天消息。为了实现这一点我们将使用 Django 的数据库来存储消息。 首先我们需要创建一个模型来存储聊天消息 # chat/models.pyfrom django.db import models from django.contrib.auth.models import Userclass Message(models.Model):user models.ForeignKey(User, on_deletemodels.CASCADE)content models.TextField()timestamp models.DateTimeField(auto_now_addTrue)def __str__(self):return f{self.user.username}: {self.content}然后我们需要修改 ChatConsumer以便在接收到消息时将其保存到数据库中 # chat/consumers.pyfrom channels.generic.websocket import AsyncWebsocketConsumer from django.contrib.auth.models import AnonymousUser from .models import Message import jsonclass ChatConsumer(AsyncWebsocketConsumer):async def connect(self):self.user self.scope[user]if isinstance(self.user, AnonymousUser):await self.close()else:await self.accept()async def disconnect(self, close_code):passasync def receive(self, text_data):text_data_json json.loads(text_data)content text_data_json[message]message Message.objects.create(userself.user, contentcontent)message.save()现在当用户发送消息时它们将被保存到数据库中。 显示历史消息 最后我们需要修改前端以显示历史消息。在 ChatConsumer 中我们可以添加一个方法来发送历史消息给客户端 # chat/consumers.pyclass ChatConsumer(AsyncWebsocketConsumer):...async def fetch_messages(self):messages Message.objects.all()[:10] # 获取最近的10条消息content {command: messages,messages: self.messages_to_json(messages)}await self.send(text_datajson.dumps(content))staticmethoddef messages_to_json(messages):result []for message in messages:result.append({user: message.user.username,content: message.content,timestamp: str(message.timestamp)})return result然后在连接建立时调用这个方法 # chat/consumers.pyasync def connect(self):...await self.fetch_messages()在前端你可以使用 JavaScript 来接收并显示历史消息。 结论 通过添加用户认证和消息持久化功能我们的实时聊天应用变得更加完善和实用。你可以根据需要进一步定制和扩展这个应用例如添加在线用户列表、私聊功能等。Django Channels 提供了强大的工具让你可以构建出功能丰富的实时 Web 应用。
http://www.hkea.cn/news/14582786/

相关文章:

  • 培训通网站建设淄博网站优化资讯
  • 做个外贸网站多少钱零售客户电商网站
  • 文昌网站 做炸饺子无极网页游戏
  • 盘锦网站制作公司哪些网站容易做
  • 网站备案弊端网站开发 售后服务协议
  • 用vs2010做的网站的源码yy直播助手
  • 做公众号必备的网站广告设计培训机构哪家好
  • 潍坊网站建设wancet深圳龙华鸿宇大厦网站建设
  • nginx网站301重定向怎么做文章网站如何与压力做
  • 企业网站流量预估软文广告案例
  • 网站建设服务公司有用吗国际知名设计公司的新方案
  • 哪里有做外贸网站的创业园区网站建设
  • 创业网站模板免费下载好看的论坛网站模板
  • 公司网站的建设心得网站如何备案icp
  • 网站布局设计规则广州装修公司口碑最好的是哪家
  • 邯郸企业建网站百度c2c平台
  • 手机商场网站制作wordpress博文
  • 有创意的30个网站python在线编程器
  • 电子商务网站建设与管理试卷wordpress上传大文件
  • 网站的优化什么做memcached插件wordpress
  • 网站推广平台wordpress ap
  • 代挂QQ建设网站wordpress增加下载量显示
  • 国内最好的网站服务器福州小型网站建设
  • 浙江建站优化品牌相册网站建设方案
  • 网站开发绑定qq移动网站开发认证
  • 网站开发vs平台的功能嘉定建设厅网站
  • 济南好的网站建设公司哪家好wordpress 调用画廊
  • 建购物网站需要多少钱没有网站可以备案吗
  • 网站悬浮微信二维码olam wordpress
  • 做网站麻烦不win 2008 iis建立网站