我在列表中有一个字典。我想访问django模板中的字典值。我怎么能得到它? views.py
def payment_status(request):
l1=[]
cand = CandidateDetail.objects.all()
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, 'desk/payment_status.html',{'cand_list':l1})
html文件
<div class="col-md-10">
<h3>Candidate Payment Status</h3>
<table class="cand_list">
<tr>
<th>Name</th>
<th>Email</th>
<th>Payment Status</th>
</tr>
{% for candidate in cand_list %}
<tr>
<td>{{ candidate.first_name }} {{ candidate.last_name }}</td>
<td>{{ candidate.email }}</td>
<td>{{ candidate.paid }}</td>
</tr>
{% endfor %}
</table>
</div>
我得到的错误是 - 无法解析余数:'[item] ['first_name']'来自'cand_list [item] ['first_name']'
答案 0 :(得分:1)
首先,迭代某事物的长度是从不正确的事情 - 无论是在Python中还是在模板中。
其次,在Django模板语言中,你总是使用点表示法,即使对于字典键也是如此。
所以,在你看来:
for person in cand:
for item in paid['items']:
if item['email']== person.email and item['status']=='authorized':
....
并在您的模板中:
{% for item in cand_list %}
<tr>
<td>{{ item.first_name }} {{ item.last_name }}</td>
<td>{{ item.email }}</td>
<td>{{ item.paid }}</td>
</tr>
{% endfor %}
答案 1 :(得分:0)
您可以使用{{mydict.key}}
{% for candidate in cand_list %}
<tr>
<td>{{ candidate.first_name }} {{ candidate.last_name }}</td>
<td>{{ candidate.email }}</td>
<td>{{ candidate.paid }}</td>
</tr>
{% endfor %}
答案 2 :(得分:0)
你不需要cand_len列表,只需循环遍历cand_list(dict列表)并使用dict键访问。
<div class="col-md-10">
<h3>Candidate Payment Status</h3>
<table class="cand_list">
<tr>
<th>Name</th>
<th>Email</th>
<th>Payment Status</th>
</tr>
{% for item in cand_list %}
<tr>
<td>{{ item.first_name }} {{ item.last_name }}</td>
..
..
</tr>
{% endfor %}
</table>
</div>