У меня есть это приложение Django:
Страница с формой вверху с одним полем для отправки сообщения в базу данных и под ним глобальным списком сообщений.
<body>
<form id="messageForm" action="" method="post">
{{ form.as_p }}
<input type="submit" id="go" name="go" value="Go!">
</form>
<div id="msg_list">
<ul id="update">
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
</div>
</body>
При нажатии на кнопку отправить:
<script>
$(document).ready(function() {
$("#messageForm").submit(function(event) {
event.preventDefault();
data = $("#id_text").val()
dataString = "text=" + data
$.ajax({
type: "POST",
url: "/sendmsg/",
data: dataString,
success: function(html) {
$("#update").html(html);
$("ul#update li:first").hide()
$("ul#update li:first").slideToggle("slow");
}
});
return false;
});
});
</script>
Каждое сообщение имеет текст и поле отметки времени (добавляется автоматически).
На самом деле, когда вы вставляете новое сообщение, страница процесса возвращает на домашнюю страницу весь список сообщений:
if form.is_valid():
form.save()
messages = Message.objects.all()
render(request, 'message_list.html', {'messages': messages})
и это message_list.html
{% for message in messages reversed %}
<li>{{ message }}</li>
{% endfor %}
Но когда вы нажимаете «отправить», другие пользователи могут отправлять другие сообщения. Я бы вернул только новое сообщение. Я имею в виду сообщения с отметкой времени, более новой, чем отметка времени последнего сообщения, которое я вижу в списке. Я надеюсь, что вы меня поймали.
Как я могу это сделать? Идеи?