Не удалось реализовать приложение для чата между пользователями в режиме реального времени в REST-фреймворке Django
Я новичок в веб-разработке и я работаю над одним проектом, и в этом проекте я должен создать приложение чата в реальном времени user-to-user, используя django rest framework. Я реализовал это в самом django, используя пакет channels (создал потребителей, маршрутизацию, шаблоны, js файлы и некоторые другие вещи), но теперь я застрял, не знаю, что делать. Цель состоит в том, что я должен сделать API в DRF и разработчики Flutter должны связать его.
Вот мой models.py
class Thread(models.Model):
first_person = models.ForeignKey(User, on_delete=models.CASCADE, null=True,
blank=True, related_name='thread_first_person')
second_person = models.ForeignKey(User, on_delete=models.CASCADE, null=True,
blank=True, related_name='thread_second_person')
updated = models.DateTimeField(auto_now=True)
timestamp = models.DateTimeField(auto_now_add=True)
objects = ThreadManager()
class Meta:
unique_together = ['first_person', 'second_person']
class ChatMessage(models.Model):
thread = models.ForeignKey(Thread, null=True, blank=True, on_delete=models.CASCADE, related_name='chatmessage_thread')
user = models.ForeignKey(User, on_delete=models.CASCADE)
message = models.TextField()
timestamp = models.DateTimeField(auto_now_add=True)
consumers.py
routing.py
from django.urls import path
from . import consumers
websocket_urlpatterns = [
path('chat/', consumers.ChatConsumer.as_asgi()),
]
import os
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
import chat.routing
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings')
application = ProtocolTypeRouter({
'http': get_asgi_application(),
'websocket': AuthMiddlewareStack(
URLRouter(
chat.routing.websocket_urlpatterns
)
)
})
messages.js
Summary: Как я могу пропустить front side (js, шаблоны) и построить не обычный Django проект, а сделать API приложение для чата между пользователями, используя DRF