Python-Django:ifchanged模板标记
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python-Django:ifchanged模板标记,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2196字,纯文字阅读大概需要4分钟。
内容图文
![Python-Django:ifchanged模板标记](/upload/InfoBanner/zyjiaocheng/693/1466f48060574edba8eaecc4718a7eb0.jpg)
在这里我从数据库中获取具有持续时间的员工.同一员工有2或3条记录.
因此,获取员工工期并进行添加和显示,如果更改了员工ID,则
再次计算员工工期并显示
我需要查找每个员工ID分别通过{{forloop.counter}}有多少条记录
这是我的问题
>如果我的循环到达{%ifchanged eachSc.laEmpNum%},则{{result.0}}.如果再次出现,则{{result.1}}和{{result.2}}依此类推…
>如果我的循环到达{%ifchanged eachSc.laEmpNum%},那么我的{{forloop.counter}}应该再次从0(零)开始.
结果= [5.5,4.5,1.3]我从view.py得到
{% for eachSc in DBShots1 %}
<tr>
{% ifchanged eachSc.laEmpNum %}
<td bgcolor="#FFFACD" width="1%">Tot={{ result }}</td>
{% endifchanged %}
</tr>
<td bgcolor="#FFFACD" width="1%">{{ forloop.counter }} </td>
<td bgcolor="#CCFACD" width="1%">{{ eachSc.sName }}</td>
<td bgcolor="#CCF0F5" width="1%">{{ eachSc.duration }}</td>
<td bgcolor="#CCFACD" width="1%">{{ eachSc.frames }}</td>
<td bgcolor="#CCFACD" width="5%">{{ GetEmpDept }} - {{ getEmpName.emp_name }} - {{ eachSc.laEmpNum }}</td>
{% endfor %}
解决方法:
我相信这里有几个问题要处理.首先,我看到您要打印一个“结果”变量的项目,具体取决于forloop计数器的位置.在django模板中这是不可能直接实现的(出于各种合理的原因).为了快速解决此问题而无需在视图中重新组织数据,可以定义一个自定义过滤器,该过滤器仅返回指定索引上的列表项.您可以将其放在templatetags / myfilters.py中:
from django import template
register = template.Library()
@register.filter
def getitem(mylist, index):
return mylist[index]
然后,要在’laEmpNum’更改时重置forloop计数器,您应该使用’regroup’django模板标签,如下所示:
{% load myfilters %}
{% regroup DBShots1 by laEmpNum as eachScList %}
{% for eachScGrp in eachScList %}
{% for eachSc in eachScGrp.list %}
<tr>
<td bgcolor="#FFFACD" width="1%">{{ forloop.counter }} </td>
<td bgcolor="#CCFACD" width="1%">{{ eachSc.sName }}</td>
<td bgcolor="#CCF0F5" width="1%">{{ eachSc.duration }}</td>
<td bgcolor="#CCFACD" width="1%">{{ eachSc.frames }}</td>
<td bgcolor="#CCFACD" width="5%">{{ GetEmpDept }} - {{ getEmpName.emp_name }} - {{ eachSc.laEmpNum }}</td>
</tr>
{% endfor %}
<tr>
<td> </td><td> </td>
<td bgcolor="#FFFACD" width="1%">Tot={{ result|getitem:forloop.counter0 }}</td>
</tr>
{% endfor %}
第一行加载我们的自定义过滤器库.最后一部分使用自定义过滤器,基于基于“ laEmpNum”分组程序的迭代来检索结果项.
内容总结
以上是互联网集市为您收集整理的Python-Django:ifchanged模板标记全部内容,希望文章能够帮你解决Python-Django:ifchanged模板标记所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。