Не удается обновить данные в DIV python Django и страницу после jquery

Начну с того, что у меня есть 2 переменные в шаблоне HTML (messages и users) и есть несколько кнопок, при нажатии на одну из них вызывается код jquery, который отправляет пост-запрос на сервер Django и возвращает обновление переменной (messages). однако, он не обновляет цикл, я также пытался вернуть новую HTML страницу, которая содержит новую обновленную переменную, но jquery не обновляет всю страницу с новым HTML

если я могу обновить только переменную, это было бы лучше, и если я не могу этого сделать, как я могу заставить jquery использовать новую HTML страницу код python, который я использовал для возврата обновления переменной, сообщает:

if request.method == 'POST':
        send=Message.objects.filter(from_id=request.POST.get('userId'),to_id=2)
        rec=Message.objects.filter(from_id=2,to_id=request.POST.get('userId'))
        messages=sorted(chain(rec, send),key=lambda instance: instance.id,reverse=True)
        print(messages)
        return HttpResponse(list(messages))

и код, который я использовал для возврата нового HTML шаблона:

m = Message.objects.filter(to_id=2).order_by('-id')
    users = {}
    for i in m:
        if users.get(i.from_id.username) == None:
            users[i.from_id.username] = User.objects.get(id=i.from_id.id)
    users = list(users.values())
    send=Message.objects.filter(from_id=users[0].id,to_id=2)
    rec=Message.objects.filter(from_id=2,to_id=users[0].id)
    messages=sorted(chain(rec, send),key=lambda instance: instance.id,reverse=True)
    if request.method == 'POST':
        send=Message.objects.filter(from_id=request.POST.get('userId'),to_id=2)
        rec=Message.objects.filter(from_id=2,to_id=request.POST.get('userId'))
        messages=sorted(chain(rec, send),key=lambda instance: instance.id,reverse=True)
        print(messages)
        return render(request,'psych.html',{"users":users, "messages":list(messages)})
    return render(request,'psych.html',{"users":users, "messages":list(messages)})

HTML код и код jquery, которые используют переменную и пытаются обновить ее

function newUser(id){
        $.ajax({
          type: 'POST',
          url:'/psych.html/',
          data:{
            userId:id,
          },
          success: function(data){
            console.log(data);// the data returnd are correct and as needed
            //but i cant make it update the messages
            $('#messageDiv').load(document.URL +  ' #messageDiv');
          }
        })
    }
{% for i in users %}
                  <li class="">
                    <button type="button" class="btn" onClick="newUser({{i.id}})">
                    <div class="d-flex bd-highlight">
                      <div class="img_cont">
                        <!-- here was an image ----------------------------------------------->
                        
                      </div>
                      <div class="user_info">
                        <span>{{i.id}}</span>
                        
                      </div>
                    </div>
                  </button>
                  </li>
                  
                  {% endfor %}
<!-- The varialbe that i'm trying to update is called messages bottom -->

{% for o in messages %}
                      {% if o.to_id.id != 2 %}
                        
                        <div class="d-flex justify-content-start mb-4">
                          <div class="img_cont_msg">
                          <!-- here was an image-->
                          </div>
                          <div class="msg_cotainer">
                            {{o.message}} 
                            <!-- <span class="msg_time">{{o.time}}</span> -->
                          </div>
                        </div>
                      {% else %}
                        <div class="d-flex justify-content-end mb-4">
                          <div class="msg_cotainer_send">
                            {{o.message}}
                            <!-- <span class="msg_time_send">{{o.time}}</span> -->
                          </div>
                          <div class="img_cont_msg">
                                            <!-- here was an image-->
                          </div>
                        </div>
                    {% endif %}
                  {% endfor %}

Если это поможет, я сделал это раньше и обновил сообщения из jquery, но я использовал форму и там была только 1 переменная, я добавлю код к этому тоже

$(document).on('submit','#submitMessage', function (e){
        e.preventDefault();
        $.ajax({
          type: 'POST',
          url:'/psych.html/',
          data:{
            message:$('#messageHolder').val(),
            csrfmiddlewaretoken: $('input[message=csrfmiddlewaretoken]').val(),

          },
          success: function(data){
          // it work like charm here 
            $('#messageDiv').load(document.URL +  ' #messageDiv');
          }
        })
      })
{% for o in messages %}
  {% if o.to_id.id == 2 %}
    <div class="d-flex justify-content-start mb-4">
      <div class="img_cont_msg">
        <!-- here was an image-->
      </div>
      <div class="msg_cotainer">
        {{o.message}} 
        <!-- <span class="msg_time">{{o.time}}</span> -->
      </div>
    </div>
  {% else %}
    <div class="d-flex justify-content-end mb-4">
      <div class="msg_cotainer_send">
        {{o.message}}
        <!-- <span class="msg_time_send">{{o.time}}</span> -->
      </div>
      <div class="img_cont_msg">
        <!-- here was an image-->
      </div>
     </div>
  {% endif %}
{% endfor %}
<form id="submitMessage" >
  {% csrf_token %}
    <div class="card-footer">
      <div class="input-group">
        <div class="input-group-append"></div>
          <input name="message" class="form-control type_msg" placeholder="Type your message..." id="messageHolder">
          <div class="input-group-append">
          <button type="submit" class="btn">
            <span class="input-group-text send_btn" ><i class="fas fa-location-arrow"></i></span>
          </button>
        </div>
      </div>
    </div>
</form>

Попробуйте это

$("#messageDiv").load(location.href+" #messageDiv>*");

я понял, в чем проблема, и это было потому, что я не знал этого

$("#messageDiv").load(location.href+" #messageDiv>*");

бы сделать GET запрос, поэтому все, что я сделал, это добавил необходимые данные в URL, а затем изменить URL тоже (так что если клиент обновил страницу, она останется на том же месте), не обновляя страницу, а затем сделать команду приложения там. если это может кому-то помочь, пожалуйста, посмотрите код ниже:

function newUser(id){
    var url = document.URL;
    url = url.split('/');
    
    url[url.length-2] = id;
    url = url.join('/');
    window.history.pushState("object or string", "my website name", url);
    $('#messageDiv').load(url +  ' #messageDiv');

}

К сожалению, я не знаю, как сделать post requst затем загрузить страницу, пожалуйста, если вы знаете, прокомментируйте ниже, чтобы кто-то другой мог получить помощь от этого

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