ajax код для django

181
07 мая 2018, 22:28

Написал чат на 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>
READ ALSO
onclick по разным объектам [требует правки]

onclick по разным объектам [требует правки]

Как с помощью Js или jQuery сделать возможность взаимодействия с двумя разными объектами

211
Где ошибка в форме обратной связи?

Где ошибка в форме обратной связи?

На странице выводится две формы обратной связиПервая работает корректно, вторая не работает

195
Как найти элемент в дереве по data через js?

Как найти элемент в дереве по data через js?

У меня есть в переменной значение alКак мне получить его номер data-dial-code = 355 ну или номер +350 со спана

208
Не понимаю скрипт

Не понимаю скрипт

Пожалуйста, помогите прочитать скрипт в общих словах какая строка что делаетЯ только только начал знакомиться с js и jquery

174