我尝试在django-channels的路由中使用django.urls.path和django.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
我没有使用include,而是通过嵌套来修复它URLRouter。
假设这browser_routing.urls也是一组嵌套的URLRouter.
urls.pyfrom channels.routing import URLRouter
websocket_urlpatterns = URLRouter([
path('ws/v2/', URLRouter([
path('browser/', browser_routing.urls),
])),
])
Run Code Online (Sandbox Code Playgroud)
routing.pyapplication = ProtocolTypeRouter({
'websocket': AuthMiddlewareStack(
routing.websocket_urlpatterns,
),
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
974 次 |
| 最近记录: |