簡體   English   中英

在 Django 中結合兩個 arrays

[英]combining two arrays in Django

我正在研究顯示帖子(如 twitter)的 web。 在 Django views.py 中,我編寫了一個代碼,該代碼生成了兩個 arrays 並分配了 arrays 以在 Z4CZDBAD4FCA2E7AAFF4 模板中使用。 視圖.py:

def arrays(request):
    allposts = posts.objects.all()
    m = ['empty', 'like', 'unlike', 'like', 'unlike']
    aa = [0, 1, 2, 3, 4]
    return render(request,  "network/index.html" ,{'allposts': allposts, 'm':m, 'aa':aa})

(m) 數組表示每個帖子是否被點贊(數組中每個 object 的排列與帖子 id 相同)而 (aa) 表示數據庫中每個帖子的 id

在 index.html 我想根據數組中的排列為每個帖子顯示“喜歡”或“不喜歡”。

在索引中。html

{% for post in allposts %}
    <div>
    {% for object in aa %}
    {% if object == post.id %}
    <p>{{m.object}}</p>
    {% endif %}
    {% endfor %}

   
    </div>
    {%endfor %}
 

但問題是我無法匹配 HTML 模板中的 aa 數組和 m 數組,但我可以顯示{{m.1}}而不是{{m.object}} 那么我該如何匹配這兩個 arrays 呢?

我不確定這里的“匹配”和“安排”是什么意思。 如果我不回答您的問題,請詳細說明您要完成的工作。

問題是我無法匹配 HTML 模板中的 aa 數組和 m 數組

這是含糊的,但建議您要將 m 中的某些元素附加到 aa 中的某些元素。 我建議像字典一樣以組合方式發送數據

new_m = {a: m[a] for a in aa}

在 index.html 我想根據數組中的排列為每個帖子顯示“喜歡”或“不喜歡”

這也有點模糊,但建議您要根據 aa 訂購 m。 下面是你將如何做到這一點:

m = [x for x,_ in sorted(zip(m, aa)]

最后,我對模板中的這一行更加困惑: {% if object == post.id %}因為它只會在前 5 個帖子上顯示您的喜歡、不同和其他選項。

有幾種方法可以做到這一點。 我將使用 ID 列表過濾您的結果並對其進行排序,使其與您的aa列表具有相同的順序。 然后 go 和zip

def arrays(request):
    aa = [0, 1, 2, 3, 4]
    filtered_posts = posts.objects.filter(id__in=aa).order_by("id")
    m = ['empty', 'like', 'unlike', 'like', 'unlike']
    posts_m_mapping = zip(filtered_posts, m)

    return render(request,  "network/index.html" ,{'posts_m_mapping': posts_m_mapping})

在您的模板中,只需遍歷posts_m_mapping

{% for post, sentiment in posts_m_mapping %}
   ...
{%endfor %}

暫無
暫無

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

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