[英]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.