簡體   English   中英

我如何在 django 模板的 if 語句中使用 django 變量到 javascript 字符串變量

[英]How I can use a django variable in if statement of django template into a javascript string variable

我想使用 javascript 變量將一個 div 添加到我的頁面。 這個 div 必須在右邊或左邊取一個 class,但是我的 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);
    });

這是我的 models.py:

class Chat(models.Model):
    message = models.TextField(max_length=100000)
    sender = models.ForeignKey(User,on_delete=models.CASCADE,related_name='sender')
    receiver = models.ForeignKey(User,on_delete=models.CASCADE,related_name='receiver')
    msg_time = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ['msg_time']

我在 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 實現它的一個想法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM