如何访问 Django 模板列表中的字典?
Posted
技术标签:
【中文标题】如何访问 Django 模板列表中的字典?【英文标题】:How to access a dictionary in a list in Django Template? 【发布时间】:2015-08-18 04:26:32 【问题描述】:在我的views.py中我有:
credits_total = Course.objects.filter(dept = dept_code1, b_tech = 1, type = 1).values('sem').annotate(sum = Sum('credits'))
所以 credits_total 有以下内容:
credits_total = ['sem': 3, 'sum': 19,'sem': 4, 'sum': 20,'sem': 5, 'sum': 21,'sem':6,'sum':22,'sem':7,'sum':21,'sem':8,'sum':24]
我想做这样的事情:
% for i in "012345" %
....
<b> credits_total[i]['sum'] </b>
...
% endfor %
如何在列表中的特定索引处访问字典中的特定键?
我是 django 新手,请您详细解释一下。谢谢!
【问题讨论】:
***.com/questions/5242866/… 【参考方案1】:这成功了: 在views.py中:
from itertools import izip_longest
def course(request, dept_code):
....
sum_credits_total = list()
....
for i in credits_total: sum_credits_total.append(i['sum'])
....
total_list = izip_longest(sum_credits_total,hours_total,sum_sem_credits,sum_sem_hours)
context_dict['total_list'] = total_list
return render (request,'course.html', context_dict)
在模板中:
% for i,j,k,l in total_list %
i....j....k....l
% endfor %
【讨论】:
【参考方案2】:Python 字典最好被认为是unordered sets。您不应该尝试对它们进行索引...也就是说,您可以iterate over your dictionary data 并按如下方式打印。
% if credits_total %
% for item in credits_total %
sem: item.sem , sum: item.sum
% endfor %
% endif %
【讨论】:
即使这似乎也没有给我结果。它没有任何价值! 您在 credits_total 中看到了什么吗?也许您没有正确传递数据。使用您的确切数据,这对我来说很好。 确切地说,我在views.py中做这样的事情:context_dict['credits_total'] = credits_total
和btech_list = zip(collapse_num,sem_title_btech,theory_btech,practical_btech,integers)
其中integers = [0,1,2,3,4,5]
和`context_dict['btech_list'] = btech_list and
返回渲染( request,'course.html', context_dict) ` 然后在 django 模板中 % for i,j,k,l,m in btech_list %
.....` credits_total.m.sum. But this doesn't give any data at all. It gives the results when i do
credits_total.1.sum` 或直接输入任何其他数字。
你为什么试图通过迭代btech_list
来转储credits_total
字典?简化...从等式中删除btech_list
。 credits_total
完全是一个不同的对象,应该单独处理。【参考方案3】:
在模板中,您可以使用点符号。 像这样:
<b>credits_total.i.sum</b>
但问题在于循环内的i
var 不是数字。
您需要编写自己的标签过滤器才能在 python 中获得类似于常规range()
的内容。
看到这个:create range filter
【讨论】:
我试过了,但是数据不显示也不抛出任何错误!! 我尝试通过将 i 替换为 0 来对其进行硬编码。它仍然不起作用! 我尝试使用数字而不是 i,它对我有用。credits_total.1.sum
确切地说,我在views.py中做这样的事情:context_dict['credits_total'] = credits_total
和btech_list = zip(collapse_num,sem_title_btech,theory_btech,practical_btech,integers)
其中integers = [0,1,2,3,4,5]
和`context_dict['btech_list'] = btech_list and
返回渲染( request,'course.html', context_dict) ` 然后在 django 模板中 % for i,j,k,l,m in btech_list %
.....` credits_total.m.sum. But this doesn't give any data at all. It gives the results when i do
credits_total.1.sum`。现在 m 是一组 int 值,但它仍然没有给出数据!以上是关于如何访问 Django 模板列表中的字典?的主要内容,如果未能解决你的问题,请参考以下文章