Python 如何从';对于';Django视图中dict的循环

Python 如何从';对于';Django视图中dict的循环,python,python-3.x,django,django-views,Python,Python 3.x,Django,Django Views,我正在尝试获取mydict_1%}中p的{%for%p的索引号,以便我可以在另一个dict上使用该索引来获取值。我想用p作为索引号。如何在Django视图中执行此操作? 两个列表中的数据都对应于系列中的索引 mylist_1 = [{'itemCode': 'AZ001', 'price': 15.52}, {'itemCode': 'AB01', 'price': 31.2}, {'itemCode': 'AP01', 'price': 1.2}] #list of dict mylist_2

我正在尝试获取mydict_1%}中p的
{%for%p
的索引号,以便我可以在另一个dict上使用该索引来获取值。我想用
p
作为索引号。如何在Django视图中执行此操作? 两个列表中的数据都对应于系列中的索引

mylist_1 = [{'itemCode': 'AZ001', 'price': 15.52}, {'itemCode': 'AB01', 'price': 31.2}, {'itemCode': 'AP01', 'price': 1.2}] #list of dict
mylist_2 = [{'prop': 'val000'}, {'prop': 'val008'}, {'prop': 'val009'}] #list of dict

{% for p in mylist_1 %}
    <tr>
       <td><a>{{p.itemCode}}</a></td>
       <td><a>{{p.price}}</a></td>
       #Want to use p's index number to get value of that index from mylist_2
       <td><a>{{mylist_2.[p].prop}}</a></td> #How to do this correctly? Expecting val000 for index 0
    </tr>
{% endfor %}
mylist_1=[{'itemCode':'AZ001','price':15.52},{'itemCode':'AB01','price':31.2},{'itemCode':'AP01','price':1.2}]\
mylist_2=[{'prop':'val000'},{'prop':'val008'},{'prop':'val009'}]#目录列表
{mylist_1%}
{{p.itemCode}
{{p.price}}
#要使用p的索引号从mylist_2中获取该索引的值吗
{{mylist_2[p].prop}}}#如何正确执行此操作?索引0应为val000
{%endfor%}

你没有。Django的模板语言故意限制这一点,以防止人们在模板中编写业务逻辑。您可以将字典与传递到模板:

def my_view(request):
    # …
    context = {
        # …,
        'mydicts': zip(mydict_1, mydict_2)
    }
    return render(request, 'some-template.html', context)
def my_视图(请求):
# …
上下文={
# …,
“mydicts”:zip(MyDict1,MyDict2)
}
返回呈现(请求'some template.html',上下文)
然后在模板中使用以下内容进行迭代:

{% for p, q in mydicts %}
    {{ p.itemCode }}
    {{ p.price }}
    {{ q.prop }}
{% endfor %}
{mydicts%中p,q的%
{{p.itemCode}
{{p.price}}
{{q.prop}}

{%endfor%}
我的示例有错误,我修复了它们。有没有办法在
{p%for p in mylist_1%}
中获取p的索引号?@KapishM:索引号是的,使用
{forloop.counter0}}
,但是你不能下标,所以即使你有索引,你也不能访问
mylist_2
的第i个元素(除了低效的嵌套循环)。谢谢你的帮助。我可以修改并将两个列表放在一个列表中;在这种情况下,我可以使用父列表上的idex号吗?@KapishM:不,你不能下标。因此,如果
y
是一个变量,那么基本上
x[y]
是不可能的(除非您使用嵌套循环,但这将非常低效)。这样做是为了防止人们在模板中做所有这些事情。视图只需要“准备”数据,以便模板能够轻松地呈现数据。再次感谢您的帮助。我能够用过滤器解决这个问题。