我如何在 Django-Channels 中嵌套 URLRouter

Ant*_*Oca 6 django-channels

我尝试在django-channels的路由中使用django.urls.pathdjango.urls.include构建 URL 。

前任:

from django.urls import path, include

from .browser import routing as browser_routing


websocket_urlpatterns = [
    path('ws/v2/', include([
        path('browser/', browser_routing.urls),
    ])),
]
Run Code Online (Sandbox Code Playgroud)
from channels.auth import AuthMiddlewareStack
from channels.routing import ProtocolTypeRouter, URLRouter
from my_channels import routing

application = ProtocolTypeRouter({
    'websocket': AuthMiddlewareStack(
        URLRouter(
            routing.websocket_urlpatterns,
        ),
    ),
})

Run Code Online (Sandbox Code Playgroud)

但我得到:

django.core.exceptions.ImproperlyConfigured:: URLRouter 不支持 include()。请改用嵌套的 URLRouter 实例。

我在文档中找到了评论但没有示例:https : //channels.readthedocs.io/en/latest/releases/2.1.0.html?highlight=URLRouter#nested-url-routing

rap*_*api 6

我没有使用include,而是通过嵌套来修复它URLRouter

假设这browser_routing.urls也是一组嵌套的URLRouter.

urls.py

from channels.routing import URLRouter

websocket_urlpatterns = URLRouter([
    path('ws/v2/', URLRouter([
        path('browser/', browser_routing.urls),
    ])),
])
Run Code Online (Sandbox Code Playgroud)

routing.py

application = ProtocolTypeRouter({
    'websocket': AuthMiddlewareStack(
        routing.websocket_urlpatterns,
    ),
})
Run Code Online (Sandbox Code Playgroud)