我很好奇是否有关于使用 Websockets、React 和 Django 的明确答案。
根据我读到的内容,(1) 将 React 与 Django 链接的首选方法是使用 Django Rest Framework (DRF)。(2) 在 Django 中利用 websockets 的首选方法似乎是通过 Django Channels。 (3) 在 React 中使用 websockets 的首选方式是通过 Socket.io。
看来将这三者联系起来相当困难。我看到两种可能的解决方案,但都可能无效。
- React 使用 Socket.io 并通过 DRF 与后端进行通信。
- React 通过 Django 模板呈现,并通过 Channels 使用 Websocket。
我认为#2 是更令人头疼的路径,因为 Django 是一个非常固执己见的框架。
关于 Websockets、React 和 Django 应如何一起使用,有明确的答案吗? ( This question 几乎没有任何吸引力。)
编辑不太优选的选项 3:在大多数应用程序中使用 React、Node 和 Express,包括仅针对 Python 真正擅长的东西(例如 ML 管道)的 Websockets 和 DRF。
最佳答案
关于使用 websockets、React 和 Django,没有明确的答案(我认为不应该有)。这些是不同的技术,尽管它们可以很好地连接起来。如何连接它们取决于您。最好的做法是使用它们以最简单的整体架构来实现您的项目需求。
不久前,我创建了一个示例项目,该项目使用:
- 用于后端的 Django(Django Rest Framework、Django Channels 和 Celery),
- React 前端(通过
ws
与 REST API 和 WebSocket 通信)
该项目可在 GitHub 上获取:https://github.com/pplonski/simple-tasks
该项目是使用docker-compose
(docker-compose.yml文件)部署的,并具有以下组件:
- nginx 服务 React
- wsgiserver 提供 REST API
- asgiserver 提供 websocekts
- 用于 Celery 的rabbitmq 和 redis
- Celery 的工作人员和听众
该项目正在对两个数字进行简单求和并进行 sleep 。该任务是使用 Celery 在后台计算的,我使用 websockets 实时沟通进度(每休眠 1 秒,更新就会发送给客户端)。
React+Django 是我的首选堆栈,因为我从事许多数据科学/机器学习项目。
关于reactjs - Websocket、React + Django,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71506466/