Написал чат на django все работает отлично но с перезагрузкой отправил сообщение перезагрузка и для получение перезагружает страницу чтобы увидеть сообщение но так не комфортно надо без перезагрузки помогите написать ajax код пожалуйста. проект на github https://github.com/ArenDjango/Chat-Django/tree/master/socset
вот исходники ...
models.py
class Chat(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE)
useryou = models.ForeignKey(settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
related_name="useryou")
message = models.TextField()
datamessage = models.DateTimeField(auto_now=True,
auto_now_add=False)
def __str__(self):
return str(self.user)
views.py
def chat(request, id=None):
userobjchat = get_object_or_404(UserProfile, id=id)
allmessages = Chat.objects.all()
if userobjchat.user in request.user.userprofile.messagedo.all():
request.user.userprofile.messagedo.remove(userobjchat.user)
user = request.user
n = userobjchat.user
form = MessageForm(request.POST or None, request.FILES or None)
if form.is_valid():
instance = form.save(commit=False)
instance.user = request.user
instance.save()
if user not in userobjchat.messagedo.all():
userobjchat.messagedo.add(user)
if user not in userobjchat.allmessagesstory.all() and
n not in user.userprofile.allmessagesstory.all():
user.userprofile.allmessagesstory.add(n)
userobjchat.allmessagesstory.add(user)
else:
pass
context = {
"userobjchat": userobjchat,
"allmessages": allmessages,
"form": form,
}
return render(request, 'chat/chat.html', context)
urls.py
path('listusers/<int:id>/chat/', chat, name='chat'),
chat.html template
{% for mess in allmessages %}
{% if mess.user == request.user %}
{% if mess.useryou == userobjchat.user %}
<div class="mymessage">
<div class="imgandmsg">
<p class="nameclassmsg">
{{ mess.user.get_full_name }}
</p>
<img class="img-fluid imgchatsmallmy"
src="{{ mess.user.userprofile.avatar.url }}">
</div>
<p class="messageclass">{{ mess.message|linebreaks }}</p>
</div>
<br><br><br><br><br><br>
{% endif %}
{% else %}
{% if mess.user == userobjchat.user %}
{% if mess.useryou == request.user %}
<div class="yourmessage">
<div class="imgandmsgyour">
<img class="img-fluid imgchatsmall imgchatsmallyour"
src="{{ mess.user.userprofile.avatar.url }}">
<p class="nameimgmsgyour">
{{ mess.user.get_full_name }}</p>
</div>
<p class="msgyourclass">{{ mess.message|linebreaks }}</p>
</div>
<br><br><br><br><br>
{% endif %} <!-- mess.useryou = request.user -->
{% endif %}
{% endif %}
{% endfor %}
<script>
// Делает скролл чата всегда внизу
var messageBody = document.querySelector('.messagepole');
messageBody.scrollTop = messageBody.scrollHeight - messageBody.clientHeight;
</script>
<script>
var chatlist = document.getElementById('msg-list-div');
chatlist.scrollTop = chatlist.scrollHeight;
</script>
</div> <!-- ../ MessagePole -->
<div class="formachat">
<form action="" method="post" id="formmessage"
enctype='multipart/form-data'>
{% csrf_token %}
<!-- <select class="hiddentest"
name="useryou" id="id_useryou" required>
<option value="1">{{ userobjchat.user }}</option>
</select> -->
<input type="hidden" for="id_message"
name="runmessagehtml" id="hiddeninputmsg">
<textarea wrap="soft | hard" class="textmessage"
name="message" id="id_message"></textarea>
<input type="hidden" name="messagedohtml">
<!-- Выберает useryou -->
<div class="hiddentest">
<tr><th><label for="id_useryou">Useryou:</label></th><td>
<select name="useryou" id="id_useryou" required>
<option
value="{{ userobjchat.user.id }}"
selected>{{ userobjchat.user }}
</option>
</select></td></tr>
</div>
<button name="submit" type="submit" id="submit"
class="buttonmessage">
<i class="fas fa-arrow-alt-circle-right circlemessage"></i>
</button>
</form>
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Как с помощью Js или jQuery сделать возможность взаимодействия с двумя разными объектами
На странице выводится две формы обратной связиПервая работает корректно, вторая не работает
У меня есть в переменной значение alКак мне получить его номер data-dial-code = 355 ну или номер +350 со спана
Пожалуйста, помогите прочитать скрипт в общих словах какая строка что делаетЯ только только начал знакомиться с js и jquery