在 Django 频道上找不到路径

Posted

技术标签:

【中文标题】在 Django 频道上找不到路径【英文标题】:No path found on Django Channels 【发布时间】:2020-04-05 19:51:31 【问题描述】:

我在我的 Django 频道应用程序上创建了一个简单的消费者,但是当我尝试从前端连接到 websocket 时,我不断收到以下错误:

ws_protocol: ERROR - [Failure instance: Traceback: <class 'ValueError'>: No route found for path 'messages/127.0.0.1:8000/messages/'.

这是我的路线: myapp>routing.py

from .consumers import EchoConsumer

websocket_urlpatterns = [
    path("messages/", EchoConsumer),
]

mysite>routing.py

# mysite/routing.py
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
import myapp.routing

application = ProtocolTypeRouter(
    # (http->django views is added by default)
    'websocket': AuthMiddlewareStack(
        URLRouter(
            myapp.routing.websocket_urlpatterns
        )
    ),
)

这是我尝试从前端连接到 websocket 的方式:

var wsStart = 'ws://' + window.location.host + window.location.pathname

谁能帮我找出我做错了什么吗?

【问题讨论】:

【参考方案1】:

您使用的是路径而不是 url,只需在 routing.py 中尝试:

from .consumers import EchoConsumer
from django.conf.urls import url

websocket_urlpatterns = [
    url("messages/", EchoConsumer),
]

【讨论】:

以上是关于在 Django 频道上找不到路径的主要内容,如果未能解决你的问题,请参考以下文章

示例教程在 Django 3 上找不到页面错误

在 Heroku 上找不到 Django 静态文件(带白噪声)

Android ClassNotFoundException:在路径上找不到类

Django 表单在生产与 LH 上找不到正确的 ID int 增量

在此服务器 django 上找不到请求的 URL

Android ClassNotFoundException:在路径上找不到类