Как получать сообщения (данные) в реальном времени из базы данных с помощью 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 ) установите требования (лучше использовать виртуальную среду), а затем просто запустите сервер для этого файла. Вы получите полностью работающую систему чата.

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