Django-channels: не найден маршрут для пути

Я следовал этому руководству по django-channels: https://youtu.be/RVH05S1qab8

Я следовал каждому шагу, указанному в видео, сначала, когда я столкнулся с проблемой, я перепросмотрел его и проследил еще раз, чтобы убедиться, что я все сделал правильно, но это было не так.

Я довольно новичок в django, поэтому извините, если мои объяснения неточны

я настроил вебсокет в файле thread.html:

<script>
// websocket scripts

var loc = window.location

var wsStart = 'ws://'
if(loc.protocol == 'https:'){
    wsStart = 'wss://'
}
var endpoint = wsStart + loc.host + loc.pathname
var socket = new WebSocket(endpoint)

socket.onmessage = function(e){
    console.log('message', e)
}

socket.onopen = function(e){
    console.log('open', e)
}

socket.onerror = function(e){
    console.log('error', e)
}

socket.onclose = function(e){
    console.log('close', e)
}

</script>

мой consumers.py файл:

import asyncio
import json
from django.contrib.auth import get_user_model
from channels.consumer import AsyncConsumer

from channels.db import database_sync_to_async

from .models import Thread, ChatMessage


class ChatConsumer(AsyncConsumer):
    async def websocket_connect(self, event):
        print('connected', event)

    async def websocket_disconnect(self, event):
        print('disconnected', event)

    async def websocket_receive(self, event):
        print('receive', event)

и routing.py:

from django.conf.urls import url
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
from channels.security.websocket import AllowedHostsOriginValidator, OriginValidator

from chat.consumers import ChatConsumer

application = ProtocolTypeRouter({
    'websocket': AllowedHostsOriginValidator(
        AuthMiddlewareStack(
            URLRouter(
                [
                    url(r"^messages/(?P<username>[\w.@+-]+)/$", ChatConsumer),
                ]
            )
        )
    )
})

и когда я обновляю сайт, я получаю следующие ошибки в консоли firefox:

Firefox не может установить соединение с сервером по адресу ws://127.0.0.1:8000/messages/user2.

и в моем терминале :

[2021/11/23 20:50:06] HTTP GET /messages/user2 200 [0.01, 127.0.0.1:52340] 2021-11-23 20:50:06,177 - ERROR - ws_protocol - [Failure instance: Traceback: <class 'ValueError'>: Не найден маршрут для пути 'messages/user2'. /home/mephis/projects/channels-rapid/lib/python3.8/site-packages/autobahn/websocket/protocol.py:2841:processHandshake [...] /home/mephis/projects/channels-rapid/lib/python3.8/site-packages/daphne/ws_protocol.py:72:onConnect --- исключение поймано здесь --- /home/mephis/projects/channels-rapid/lib/python3.8/site-packages/twisted/internet/defer.py:191:maybeDeferred [...] [2021/11/23 20:50:11] WebSocket DISCONNECT /messages/user2 [127.0.0.1:52342]

]

то, что я пробовал: жесткое кодирование строки

url(r"^messages/(?P[\w.@+-]+)/$", ChatConsumer),

to

url(r"^messages/user2/$", ChatConsumer),

просто чтобы посмотреть, сработает ли это - не сработало

я также следил за ответами на этот вопрос: django-channels: Не найден маршрут для пути

и ни один из них не принес мне никаких результатов

я использую каналы 2.1.2 и django 2.0.7

Вернуться на верх