Как получать сообщения (данные) в реальном времени из базы данных с помощью ajax и django
я хочу получать сообщения в реальном времени используя ajax и django для бэкенда, я написал логику для отправки сообщений и это работает, но я хочу получать сообщение сразу же, как другой пользователь отправляет мне сообщение без необходимости обновлять страницу, я пытался использовать интервал ajax, но похоже я не понимаю как правильно использовать интервал и forloop в ajax, что я должен сделать, чтобы достичь желаемого результата?
directs.html
views.py
@login_required
def Directs(request, username):
user = request.user
messages = Message.get_message(user=user)
active_direct = username
directs = Message.objects.filter(user=user, reciepient__username=username)
directs.update(is_read=True)
for message in messages:
if message['user'].username == username:
message['unread'] = 0
context = {
'directs': directs,
'messages': messages,
'active_direct': active_direct,
}
return render(request, 'directs/direct.html', context)
def SendDirect(request):
if request.method == "POST":
from_user = request.user
to_user_username = request.POST['to_user']
body = request.POST['body']
to_user = User.objects.get(username=to_user_username)
Message.sender_message(from_user, to_user, body)
# return redirect('message')
success = "Message Sent."
return HttpResponse(success)
Что ж, я понимаю, чего вы пытаетесь достичь. Вы пытаетесь сделать чат-систему с помощью django и используете для этого ajax. Но дело в том, что ajax в основном используется для асинхронных запросов и для api запросов, а ajax просто использует http запросы для передачи данных. Вам нужно двустороннее и длительное соединение для системы чата .
То, что вы делаете, можно легко сделать с помощью django channels и django asynchronous (точнее, asgi.py) .
Каналы Django отлично подходят для создания систем реального времени (чат, уведомления и т.д.) .
Перейдите по этой ссылке для изучения каналов django и создания собственной системы чата. А также у меня есть своя система чата в моем github. Просто клонируйте репозиторий this. Запустите терминал в этой папке и ( pip install -r requirements.txt ) установите требования (лучше использовать виртуальную среду), а затем просто запустите сервер для этого файла. Вы получите полностью работающую систему чата.