Django Channels教程实现WebSocket时出现404错误求助
解决Django Channels WebSocket 404错误
核心问题
你的WebSocket路由规则写法错误,导致无法匹配请求的/ws/chat/lobby/地址,从而返回404。
具体修复步骤
1. 修正routing.py的路由规则
re_path需要使用正则表达式语法,而非path的占位符格式。将原代码修改为:
from django.urls import re_path from .consumers import ChatConsumer websocket_urlpatterns = [ re_path(r'^ws/chat/(?P<room_name>[^/]+)/$', ChatConsumer.as_asgi()), ]
r'^ws/chat/(?P<room_name>[^/]+)/$':正则表达式确保匹配以/ws/chat/开头、以斜杠结尾的地址,(?P<room_name>[^/]+)会捕获任意不含斜杠的字符串作为room_name参数,和前端请求的地址完全对应。
2. 检查asgi.py的导入路径
确认你的app名称是小写的chat(Django惯例),将import Chat.routing修改为:
import chat.routing
如果你的app确实命名为Chat(大写),则保持原导入,但建议遵循Django小写命名规范。
3. 重启开发服务器
修改路由配置后,需要重启runserver才能生效:
python manage.py runserver
验证修复
重新进入聊天页面,点击发送按钮,终端不再出现404错误,WebSocket连接即可正常建立。
内容的提问来源于stack exchange,提问作者Ar So
相关产品推荐
相关产品推荐

