如何在Django模板中访问列表内部的字典值?
在Django模板中访问含字典的列表值
嘿,这事儿其实挺简单的,我一步步给你说怎么实现:
第一步:把列表传递给模板
你现在的视图里已经生成了包含字典的列表l1,但得记得把它作为上下文变量传递给模板才行。修改一下render函数的参数,给列表起个好记的名字(比如candidates)打包进去:
def payment_status(request): l1 = [] cand = CandidateDetail.objects.all() # 这里假设你已经正确定义了paid变量哈 for person in cand: for num in range(0, paid['count']): if paid['items'][num]['email'] == person.email and paid['items'][num]['status'] == 'authorized': cand_dict = {'first_name': person.first_name, 'last_name': person.last_name, 'email': person.email, 'paid': 'Yes'} l1.append(cand_dict) # 把列表放进上下文,传给模板 return render(request, 'your_template.html', {'candidates': l1})
第二步:在模板里遍历并访问字典值
到了模板这边,用Django自带的模板标签遍历列表,然后直接通过字典的键就能访问对应的值。比如可以做个表格来展示数据:
{% if candidates %} <div class="payment-status-container"> <table> <thead> <tr> <th>First Name</th> <th>Last Name</th> <th>Email</th> <th>Payment Status</th> </tr> </thead> <tbody> {% for candidate in candidates %} <tr> <td>{{ candidate.first_name }}</td> <td>{{ candidate.last_name }}</td> <td>{{ candidate.email }}</td> <td>{{ candidate.paid }}</td> </tr> {% endfor %} </tbody> </table> </div> {% else %} <p>暂时没有找到已授权付款的候选人哦。</p> {% endif %}
小提醒
- 如果担心某个字典键可能不存在(比如逻辑漏写字段),可以用
{% if candidate.first_name %}先判断,避免模板报错 - 要是
paid变量是从外部接口获取的,记得加些异常处理,比如判断paid['items']是否存在、索引会不会越界,不然视图容易崩溃
内容的提问来源于stack exchange,提问作者user7104029
相关产品推荐
相关产品推荐

