Проблема с обновлением данных с помощью js в чате django
Добрый день У меня есть django приложение, в котором должен быть чат. Он не должен быть без задержек, из-за этого я сделал его с помощью простых моделей и попытался сделать html захват новых данных о сообщениях с помощью js Как я прочитал в интернете, это должно работать, но я думаю, что я сделал ошибку, если кто-то может помочь, я буду очень благодарен
Здесь находится chat.html
{% extends 'women/base.html' %}
{% load static %}
{% block content %}
<h1>Chat</h1>
<ul>
{% for message in messages %}
<li>
<strong>{{ message.author.username }}:</strong> {{ message.content }} - {{ message.timestamp }}
</li>
{% endfor %}
</ul>
<form method="post" action="{% url 'send_message' chat.id %}">
{% csrf_token %}
<label for="message">Message:</label><br>
<textarea id="message" name="content" rows="4" cols="50"></textarea><br>
<button type="submit">Send</button>
</form>
{% endblock %}
{% block javascript %}
<script src="{% static 'women/js/chat.js' %}"></script>
{% endblock %}
он пытается вызвать js файл в моей статической папке women(имя приложения)/static/women/js/chat.js
$(document).ready(function(){
// Extract chat_id from the URL
var chat_id = window.location.pathname.split('/')[2];
function fetchMessages(){
$.ajax({
url: '/chat/' + chat_id + '/', // replace with your view's URL
success: function(data){
// assuming 'data' is a list of messages
$('ul').empty(); // clear the current list
data.forEach(function(message){
$('ul').append('<li><strong>' + message.fields.author + ':</strong> ' + message.fields.content + ' - ' + message.fields.timestamp + '</li>');
});
}
});
}
fetchMessages(); // fetch messages immediately when the page loads
setInterval(fetchMessages, 1000); // then fetch messages every 20 seconds
});
это функция просмотра чата
def chat_view(request, chat_id):
chat = Chat.objects.get(id=chat_id)
messages = Message.objects.filter(chat=chat)
# Check if the request is an AJAX request
if request.is_ajax():
# Serialize the messages to JSON and return a JsonResponse
messages_json = serializers.serialize('json', messages)
return JsonResponse(json.loads(messages_json), safe=False)
context = {
'chat': chat,
'messages': messages
}
return render(request, 'women/chat.html', context)
def send_message(request, chat_id):
if request.method == 'POST':
chat = Chat.objects.get(id=chat_id)
content = request.POST.get('content') # Assuming 'content' is the name of your input field
message = Message(chat=chat, author=request.user, content=content)
message.save()
return redirect('chat_view', chat_id=chat.id) # Assuming 'chat_view' is the name of your chat view
и я думаю, что вам, возможно, нужно увидеть урлы для чата
path('initiate-chat/<int:post_id>/', initiate_chat, name='initiate_chat'),
path('chat/<int:chat_id>/', chat_view, name='chat_view'),
path('chat/<int:chat_id>/send/', send_message, name='send_message'),
Он может сохранять сообщения, но js-файл, который должен захватывать новые сообщения без перезагрузки страницы, не работает
Я пытался избавиться от ошибки, но не смог. Я буду очень благодарен тому, кто сможет мне помочь.