Ошибка при настройке каналов django для подключения к htmx
У меня возникла проблема при попытке разработать функцию обмена сообщениями в реальном времени с использованием каналов daphne и htmx. Я добавил каналы, django_htmx в INSTALLED_APPS в settings.py,
Это файл asgi.py: `import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.security.websocket import AllowedHostsOriginValidator
from channels.auth import AuthMiddlewareStack
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings')
django_asgi_app = get_asgi_application()
from Chat import routing
application = ProtocolTypeRouter({
"http": django_asgi_app,
"websocket": AllowedHostsOriginValidator(
AuthMiddlewareStack(URLRouter(routing.websocket_urlpatterns))
)
})
`
Это файл routing.py `import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.security.websocket import AllowedHostsOriginValidator
from channels.auth import AuthMiddlewareStack
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'server.settings')
django_asgi_app = get_asgi_application()
from Chat import routing
application = ProtocolTypeRouter({
"http": django_asgi_app,
"websocket": AllowedHostsOriginValidator(
AuthMiddlewareStack(URLRouter(routing.websocket_urlpatterns))
)
})`
Это файл consumers.py: `import json
from channels.generic.websocket import WebsocketConsumer
from .models import *
from django.shortcuts import get_object_or_404
class ChatConsumer(WebsocketConsumer):
def connect(self):
self.user = self.scope['user']
self.partner_name = self.scope['url_route']['kwargs']['username']
self.partner = get_object_or_404(User, username=self.partner_name)
self.accept()
def disconnect(self, code):
pass
def receive(self, text_data):
text_data_json = json.loads(text_data)
content = text_data_json['content']
msg = Message.objects.create(
sender=self.user,
receiver=self.partner,
content=content
)
`
Это файл HTMX:
<form hx-ext="ws" ws-connect="ws/chat/{{partner.username}}" ws-send="send:click" hx-swap="outerHTML" _="on htmx:wsAfterSend reset() me"> {% csrf_token %} <div class="flex-grow-0 py-3 px-4 border-top" style="top: 0;"> <div class="input-group"> <input type="text" class="form-control" placeholder="Type your message" name="content" /> <button type="submit" class="btn btn-primary" >Gửi</button> </div> </div> </form>
Пожалуйста, помогите мне найти ошибку и исправить ее