代码之家  ›  专栏  ›  技术社区  ›  Geo

Django URL中不需要的空白

  •  1
  • Geo  · 技术社区  · 1 年前

    我的url模式中有一个不需要的空白,我想当我试图与我的 Flutter 我的应用程序 Django 后端。我知道在回答中也有类似的问题,但我找不到这是从哪里来的,也找不到如何修复它。这些是我的URL模式,当我尝试与WebSocket握手时,我在中遇到了以下错误 Django 航空站

    Not Found: /ws/chat_app/sjfAmH
    "GET /ws/chat_app/sjfAmH HTTP/1.1" 404 4349
    

    当我尝试访问浏览器中的WebSocket端点时,会显示404错误:

    Django使用project.urls中定义的URLconf尝试了这些 URL模式,按以下顺序:

    1. 管理
    2. ws/chat_app/(?P<unique_id>\w+)/$ 在哪里,我发现了这个不需要的空白。

    这些是我的URL模式 URL_patterns

    我有一个名为Django的应用程序 chat_app ,其中我定义了我的WebSocket使用者类。然后我添加了路由,指向我的 routing.py 文件

    from django.urls import re_path
    from .consumers import ChatConsumer
    
    # The WebSocket URL pattern for chat rooms is defined by this code
    websocket_urlpatterns = [
        re_path(r'chat_app/(?P<unique_id>\w+)/$', ChatConsumer.as_asgi()),
    ]
    

    此外,我已将聊天应用程序添加到 settings.py 安装了应用程序,并将URL包含在我的Django项目中 urls.py :

    from django.contrib import admin
    from django.urls import include, path
    from chat_app.routing import websocket_urlpatterns
    
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        ...,
        path('ws/', include(websocket_urlpatterns)),
    ]
    
    1 回复  |  直到 1 年前
        1
  •  2
  •   willeM_ Van Onsem    1 年前

    空白为 URL模式本身的一部分。Django就是这样 列表 尝试过的模式。因此,空格是包含模式的指示,但这些不在URL模式本身中。

    如果您因此访问了一个链接:

    /ws/chat_app/sjfAmH/

    它会着火。请注意 尾部斜线 。这就是模式不匹配的原因。