Нежелательные пробельные символы в урлах Django
У меня есть нежелательные пробелы в шаблоне url, и я думаю, что это создает проблемы, когда я пытаюсь установить рукопожатие между моим Flutter
приложением и моим Django
бэкэндом. Я знаю, что на подобные вопросы уже отвечали, но я не смог найти, откуда это берется и как это исправить. Вот мои шаблоны URL, и когда я пытаюсь установить связь с WebSocket, я получаю следующую ошибку в Django
терминале:
Not Found: /ws/chat_app/sjfAmH
"GET /ws/chat_app/sjfAmH HTTP/1.1" 404 4349
У меня есть приложение 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()),
]
Кроме того, я добавил chat_app в 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)),
]
Пробельные символы не являются частью самого шаблона URL. Это просто способ, которым Django перечисляет шаблоны. Таким образом, пробелы являются признаками включаемых шаблонов, но они не входят в сам шаблон URL.
Если вы таким образом перейдете по ссылке с:
/ws/chat_app/sjfAmH/
он выстрелит. Обратите внимание на косую черту . Именно поэтому шаблон не совпал.