Как я могу использовать переменную django в операторе if шаблона django в строковую переменную javascript

Я хочу добавить div на свою страницу с помощью переменной javascript. Этот div должен принимать класс right или left, но мое условие if не работает в этой переменной, и оно работает, если я пытаюсь сделать это без javascript.

Это мое мнение :

def chat(request,sender_id,receiver_id):
    if request.user.is_authenticated:
        if request.user.profile == 'C' or request.user.profile == 'A':
            user = User.objects.filter(id=request.user.id).get()
            receiver_user = User.objects.filter(id=receiver_id).get()
            if request.user.profile == 'A':
                chat = Chat.objects.filter(Q(sender_id=sender_id) | Q(receiver_id=sender_id)).all()
            elif request.user.profile == 'C':
                chat = Chat.objects.filter(Q(sender_id=sender_id,receiver_id=receiver_id) | Q(sender_id=receiver_id,receiver_id=sender_id))

            context = {
                'user': user,
                'chat': chat,
                'receiver_user': receiver_user,
            }
            return render(request,'chat/chat.html',context)
    return render(request, 'Login/logout.html')

А это мой javascript :

$(document).ready(function(){
    
        setInterval(function(){
            $.ajax({
                type: 'GET',
                url : "{% url 'getMessages' request.user.id receiver_user.id %}",
                success: function(response){
                    console.log(response);
                    $("#display").empty();
                    for (var key in response.chat)
                    {
                        var temp='<div class="msg-box {% if request.user.id == chat.sender_id %} right {% else %} left {% endif %}">\
                            <div class="details">\
                                <p class="msg">'+response.chat[key].message+'</p>\
                                <p class="date">'+response.chat[key].msg_time+'</p></div></div>';
                        $("#display").append(temp);
                    }
                },
                error: function(response){
                    console.log('An error occured')
                }
            });
        },100);
    });

Я не так хорош в js, поэтому я буду использовать частичный html, чтобы ответить на ваш вопрос.

  1. в вашем шаблоне создайте html файл (partial_msg.html):

    .
     def getMessages(request, sender_id, receiver_id):
         if request.user.profile == 'A':
             chat = Chat.objects.filter(Q(sender_id=sender_id) | Q(receiver_id=sender_id)).all()
         elif request.user.profile == 'C':
             chat = Chat.objects.filter(Q(sender_id=sender_id,receiver_id=receiver_id) | Q(sender_id=receiver_id,receiver_id=sender_id))
         return render(request,'partial_msg.html',{'chats':chat}) #new
    

2)partial_msg.html (только это, без заголовка)

{% for chat in chats %}
<div class="msg-box {% if request.user.id == chat.sender_id %} right {% else %} left {% endif %}">
               <div class="details">
                <p class="msg">{{ chat.message }}</p>
                <p class="date">{{ chat.msg_time }}</p>
               </div>
</div>
{% endfor %}
  1. вызовите свой javascript

    $(document).ready(function(){
    
         setInterval(function(){
             $.ajax({
                 type: 'GET',
                 url : "{% url 'getMessages' request.user.id receiver_user.id %}",
                 success: function(response){
    
                     $("#display").empty();
    
                     $("#display").append(response);
    
                 },
                 error: function(response){
                     console.log('An error occured')
                 }
             });
         },1000);
     });
    

Примечание: Это просто идея, как вы можете достичь этого, используя django.

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