首页
学习
活动
专区
圈层
工具
发布

💬 使用 Django + Ollama 打造本地私有化对话网站(全功能详解版)

本教程将从零开始,带你构建一个支持 WebSocket 流式响应、用户登录、模型选择、Docker 一键部署的本地 AI 对话系统。...实现组件Django 官方推荐、兼容性强DRF构建 RESTful API 接口与前端分离良好,方便接口扩展Docker环境隔离与一键部署本地开发方便、生产部署一致二、使用架构的优势与劣势分析2.1...、Phi) ✅ 支持 curl、Python requests 或 WebSocket 接口访问 ✅ 支持流式输出(stream: true) API 示例请求:{ "model": "llama3...View(视图):处理请求逻辑。 Template(模板):渲染前端页面。 Channels:用于实现 WebSocket 交互。 DRF:构建 REST API 的核心工具集。...教育、科研、政企数据本地处理场景 可离线运行的大模型助手 如果你正在寻找一个从 0 到 1 的大模型应用开发实践,这将是一个非常扎实的起点。

70800

基于Django的自习室预约管理系统

(目前未进行详细竞品分析) 第二章 概要设计 2.1 系统架构 本项目采用前后端分离的混合架构模式,逐步从传统的 Django 服务端渲染向现代化的 Vue + Django REST Framework...(DRF) API 架构迁移。...数据访问层 (Django ORM): 通过 Django ORM 与 MySQL 数据库交互。 数据库: MySQL 存储所有业务数据。 架构图 !...头像、密码) 后台管理模块 (Django Admin): 数据管理 (用户、自习室、座位、预约等) 2.3 接口设计 RESTful API (DRF): /api/login/: 用户登录...性能优化: 引入 Redis 缓存热点数据,优化数据库查询(索引、分页),实现前端资源懒加载。 功能增强: 实现智能座位推荐。 集成 WebSocket 实现预约状态、系统通知的实时推送。

29210
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django实时通信实战:WebSocket与ASGI全解析(上)

    WebSocket 是一种在单个 TCP 连接上提供全双工通信的网络协议,它打破了 HTTP 的单向请求限制,让服务器和客户端可以随时向对方发送数据。...101 Switching Protocols响应,连接从 HTTP 切换为 WebSocket数据传输:此后通过帧(Frame)格式传输数据,支持文本帧、二进制帧和控制帧(关闭、ping/pong)。...:服务器可主动推送数据,无需客户端频繁请求高效率:帧结构简洁,头部信息远小于 HTTP 头,减少传输开销,提高数据传输效率WebSocket 的应用场景实时聊天应用实时协作工具金融实时数据监控在线游戏与互动应用物联网...Django Channels的核心组件Consumers(消费者):类似视图(View),处理 WebSocket 连接、消息收发Routing(路由):将 WebSocket URL 映射到对应的消费者...disconnect() :当客户端关闭 WebSocket 连接时调用。receive() :当接收到客户端发送的消息时调用。send() :用于向客户端发送消息。

    38710

    python测试开发django-81.dwebsocket实现websocket

    它会为某些数据设定过期时间,当数据过期后才会向服务端发送请求;这种机制适合数据的改动不是特别频繁的情况。...WebSocket的工作流程是这 样的:浏览器通过JavaScript向服务端发出建立 WebSocket 连接的请求,在 WebSocket 连接建立成功后,客户端和服务端就可以通过 TCP连接传输数据...==0.5.11 dwebsocket 使用 在视图函数里面使用 accept_websocket装饰器可以接收http 请求和 websocket 请求。...3.WebSocket.wait() 返回一个客户端发送的信息,在客户端关闭连接之前他不会返回任何值,这种情况下,方法将返回None 4.WebSocket.read() 如果没有从客户端接收到新的消息...: # 判断是否通过websocket接收到数据 if WebSocket.has_messages(): # 接收Websocket

    1.5K20

    【玩转全栈】—— Django+vue3+讯飞星火API 实现前端页面实时AI答复

    技术栈:vue3 + element-plus + axios + pinia + router + Django5 + websocket + 讯飞星火API 本文将实现一个 AI 聊天对话功能,将前端用户输入问题以及之前对话发送给后端...,通过 api 访问大模型,返回前端实时对话数据。...由于连的 websocket ,需要频繁地接收客户端发送的消息、向客户端发送消息并保持连接状态。这些操作本质上是 I/O 密集型任务,涉及到网络请求和响应。...定义 call_spark_ai() 函数,传入参数是对话列表,通过调用讯飞星火 API ,得到流式数据,通过正则获取到 content 数据,通过 yield 并发式返回。...AI 回答) const question = ref(''); // 用户输入的问题 const aiResponse = ref([]); // AI 的响应数据 let csrfToken

    67110

    110-Django开发社交聊天网站

    权限分配:根据用户的角色,为用户分配相应的权限,如创建聊天室、删除消息等。访问控制:确保用户只能访问其权限范围内的页面和数据。3. 好友管理添加好友:允许用户搜索并添加其他用户为好友。...消息发送/接收:用户可以向聊天室发送文本、图片、表情等消息,并实时接收其他用户的消息。消息历史记录:保存聊天室的消息历史记录,以便用户随时查看。...技术实现要点使用Django的认证系统:Django内置了强大的用户认证系统,包括用户模型、登录/登出视图和中间件等,可以方便地实现用户管理功能。...集成channels库:channels库为Django提供了对WebSocket的支持,可以实现实时通讯功能。您需要在项目中配置channels,并编写相应的WebSocket消费者来处理消息。...您可以使用WebSocket API来与后端进行实时通讯。为了提供更好的用户体验,可以考虑使用前端框架(如React、Vue.js等)来构建聊天界面。

    74810

    详解接口测试(1)-常见的网络通信协议

    Restful API HTTP(Hyper Text Transfer Protocol)是超文本传输协议的缩写,是用于从 WWW 服务器传输超文本到本地浏览器的传输协议。...是一种在单个 TCP 连接上进行全双工通信的协议,位于OSI模型的应用层 WebSocket允许服务端主动向客户端推送数据。...注册自己提供的服务 调用远程服务的服务消费方(Consumer),服务消费者在启动时,向注册中心订阅(subscribe)自己所需的服务,注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者...服务消费者从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用 最后服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心 (Monitor...这是一种消息传递模式,消息不是直接从发送器发送到接收器(即点对点),而是由MQTT 服务器(或称为 MQTT Broker)分发的 如果客户端发布到 MQTT 服务器,则客户端将是发送者,MQTT 服务器将是接收者

    1.4K20

    websocket消息推送设计

    背景 公司内目前有几个项目都有消息推送的功能,例如:某个业务操作之后需要推送消息给前端页面,让用户实时感知。...使用STOMP的好处在于,它完全就是一种消息队列模式,你可以使用生产者与消费者的思想来认识它,发送消息的是生产者,接收消息的是消费者。...而消费者可以通过订阅不同的destination,来获得不同的推送消息,不需要开发人员去管理这些订阅与推送目的地之前的关系。...当业务服务需要向客户端推送消息时,调用消息中心提供的api发送到消息中心。 消息中心收到需要推送的请求后,将消息发送到mq。 消息中心作为消费者,以广播模式消费消息,此时所有节点都会消费到消息。...节点消费消息后判断推送目标对应的session是否保存在自己维护的内存中,如果不存在直接忽略,否则通过长连接推送数据。

    5.6K10

    API协议设计的10种技术

    当某个事件发生时,例如用户提交表单、发布新的文章或更新数据库,服务器会向预先定义的URL发送一个HTTP POST请求。这个URL可以是第三方应用程序的API端点,也可以是自己搭建的服务器。...服务端的事件发送——(- ) SSE是一种基于HTTP的通信协议,它允许服务器向客户端推送实时更新的数据。与传统的轮询或长轮询不同,SSE通过建立持久的连接来实现数据的双向通信。...对信息安全而言,EDI可以使用加密和数字证书等安全措施,而API可以使用访问控制和身份验证等安全措施,从而保障信息的安全性。同时I可以通过数据分析来实现数据的挖掘和分析。...通过 WebSocket,客户端和服务器之间可以建立持久性的连接,使得双方可以在任何时候都能够发送和接收数据。...总体而言,WebSocket 的引入使得 Web 应用程序在处理实时数据、推送通知和建立互动性方面取得了显著的进步。

    1.3K10

    drf的接口文档生成与管理

    参考Core API官网以及drf官网,最终生成的接口文档是以网页的方式呈现的,自动接口文档能生成的是继承自APIView及其子类的视图,具体实现流程如下 2.1 安装Core API库 pip3 install...latest: 返回最新的主机数据 read: 修改主机的访问记录 """ 2.4 访问查看 按照上述规范优化好后端接口的视图后,重启项目,访问接口文档 ?...2.5 补充说明 1、上面访问到的接口文档,可以按照右边的指引通过安装coreapi-cli,通过命令行操作访问接口文档 2、对于视图集ViewSet中的retrieve名称,在接口文档中叫做read...完成后重启项目,如果在此之前有进行数据库同步并创建了用户,那么就可以直接访问接口文档的url,并跳转到drf的认证界面进行登录 swagger界面给人以清爽简约的感觉,通过展开接口还可以对接口(传参)...API 文档(通过public、authentication_classes、permission_classes等参数配置), 因此对于不同用户(通过HTTP 请求头中的 Cookie 和 Authorization

    5.6K10

    SpringBoot集成WebSocket(原生注解方式)

    WebSockets 它可以在用户的浏览器和服务器之间打开交互式通信会话。使用此API,可以向服务器发送消息并接收事件驱动的响应,而无需通过轮询服务器的方式以获得响应。...WebSocket 对象提供了用于创建和管理 WebSocket 连接,以及可以通过该连接发送和接收数据的API。 1.添加依赖 注解是一个类层次的注解,它的功能主要是将目前的类定义成一个websocket服务器端,注解的值将被用于监听用户连接的终端访问URL地址,客户端可以通过这个URL来连接到WebSocket服务器端 *...,需要通过它来给客户端发送数据 */ private Session session; /** * 接收sid */ private String.../{sid}")注解内容为/ws/api/{sid},就表明请求地址为:ws://127.0.0.1:port/ws/api/10 3.案例:给单个SID推送消息 /** * websocket测试接口

    2K40

    Python进阶39-drf框架(一)

    State Transfer的简称,中文翻译为“表征状态转移” 2.REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识,客户端应用通过URL来获取资源的表征,获得这些表征致使这些应用转变状态...在服务器更新资源(客户端提供改变后的完整资源) PATCH :在服务器更新资源(客户端提供改变的属性) DELETE :从服务器删除资源 过滤,通过在url上传参的形式传递搜索条件 https://api.example.com...401 Unauthorized - [*]:表示用户没有权限(令牌、用户名、密码错误)。 403 Forbidden - [*] 表示用户得到授权(与401错误相对),但是访问是被禁止的。...DELETE /collection/resource:返回一个空文档 Hypermedia API,RESTful API最好做到Hypermedia,即返回结果中提供链接,连向其他API方法,使得用户不查文档..._request就是原生request # 2) 原生request对象的属性和方法都可以被drf的request对象直接访问(兼容) # 3) drf请求的所有url拼接参数均被解析到query_params

    4.8K30

    架构概念探索:以开发纸牌游戏为例

    命令和事件 简而言之,这个游戏的过程是这样的: 客户端通过消息向服务器发送命令; 服务器更新游戏状态; 服务器通过一条消息将游戏的最新状态推送给客户端; 当客户端接收到来自服务器的消息时,将其视为触发客户端状态更新的事件...客户端通过 WebSocket 通道发送命令消息,它将被转换成对服务器特定 API 的调用。 API 调用会生成响应,它将被转换成一组消息,这些消息通过 WebSocket 通道发送给每个客户端。...WebSocket 机制层 这个层负责将从 WebSocket 通道接收到的消息转换为相应的 API 调用。...此外,它也需要将更新后的状态 (调用 API 生成的响应) 转换为推送给相应的客户端的消息。 层之间的依赖关系 基于前面的讨论,游戏逻辑层独立于 WebSocket,只是一组返回状态的 API。...订阅公共 API Observable,并对接收到的通知做出相应的表示更改。 一个视图 - 服务 - 服务器交互示例 玩家可以通过点击牌面打出一张牌 更具体一点,我们来看一下怎样打出一张牌。

    1.6K10

    Django REST Framework-权限

    在DRF中,权限是通过Permission类实现的,Permission类是一个抽象类,定义了几种方法来控制API的访问权限。...IsAuthenticated IsAuthenticated是指要求用户已通过身份验证才能访问API视图。如果用户未经过身份验证,则DRF将返回一个HTTP 401 Unauthorized响应。...该权限非常适合用于需要对数据进行更改或创建的视图。IsAdminUser IsAdminUser是指只有超级用户才能访问API视图。...这是一种比较常见的权限类型,适用于需要保护数据但允许读取的情况。除了以上这些默认的权限类型,DRF还提供了一些自定义权限类,使您可以更好地控制API的访问级别。...我们使用了IsAuthenticated权限,这意味着只有通过身份验证的用户才能访问MyView视图。

    1K20

    美多商城项目(五)

    数据缓存:把经常被用户访问的数据放到缓存(redis)中,当用户来访问时,直接从缓存中获取数据进行返回,只有缓存中不存在时才查询数据库。...访问流程 客户端向服务器访问数据的时候,服务器先到redis缓存中获取对应的数据,如果获取到数据,直接进行返回;如果获取不到数据,再去查询数据库。...使用drf-extensions提供的扩展类 drf-extensions扩展对于缓存提供了三个扩展类: ListCacheResponseMixin 用于缓存返回列表数据的视图,与ListModelMixin...业务逻辑: 1.先设置用户权限,只有认证用户才可以对此接口进行访问。 2.判断用户的地址数量是否超过上限。 3.获取参数并进行校验(参数完整性,手机号格式,邮箱格式)。 4.创建并保存新增地址数据。...3.2.2获取登录用户地址数据 API: GET /addresses/ 参数: 通过请求头传递jwt token 响应: { "user_id":"用户id",

    1.6K30

    重学Springboot系列之服务器推送技术

    与SSE比较 服务端推送事件SSE 模拟网络支付场景 应用场景 sse 规范 模拟实现 服务端实现 SseEmitter api介绍 访问测试 对连接超时异常进行全局处理 SSE技术推荐参考文章 双向实时通信...websocket 整合websocket 兼容HTTPS协议 WebSocket编程基础 连接的建立 全双工数据交互 数据发送 浏览器与服务器交换数据 一个用户向其他用户群发 websocket实现聊天软件...但这样做的后果就是浪费大量流量,对服务端造成了非常大的压力。 ---- 服务端推送常用技术 在html5被广泛推广之后,我们可以使用服务端主动推送数据,浏览器接收数据的方式来解决上面提到的问题。...(通过SSE连接,由服务器端告知用户客户端浏览器) 注意:在返回最终支付结果的操作,实现了服务端向客户端的事件推送,可以使用SSE来实现 ---- 应用场景 从 sse 的特点出发,我们可以大致的判断出它的应用场景...因为是第一次接收服务器端的数据推送,所以打印了图中的第一行文字onopen 因为是接收了服务端的send message,所以打印了图中的第2行文字onmessage 服务端在数据send之后触发了自定义的

    2.6K11

    详述WebSocket原理

    概念和原理 WebSocket协议和HTTP协议一样,都是在ISO七层模型的最顶层——应用层。WebSocket允许服务器端主动向客户端推送数据。...,实时性更强; 数据格式更轻量,性能开销小,通讯高效;因为http协议每次都要携带完整的头部,但是websocket在连接建立之后,从服务端到客户端只需要携带2-10个字节的头部,而从客户端到服务端也只需要...WebSocket请求 如何兼容django的认证系统(因为私信肯定是要登录的,所以需要认证) 如果接收和推送WebSocket消息 如何通过ORM保存和获取数据 解决办法:使用django-channels...等任务处理完了,django并不能主动把结果推送出去,这时候就需要使用channels了。 channels原理: 请求流程图: 从左向右,请求来了之后会按照类型分别访问不同的方向。...,通常使用redis,不同的频道有不同的接收者监听; 3.Consumer消费者层,用来接收和处理频道层的消息; channels文件和配置含义 asgi.py 是介于网络协议服务和Python应用之间的标准接口

    3.1K10
    领券