python测试开发django-181.自定义过滤器(除法取余)
前言
使用 django 模板jinja2 写 html, 需对变量的取值做加减乘除运行,得到的结果再去判断是否为真。
这种比较复杂的逻辑运行,可以通过自定义过滤器来实现。
遇到问题
视图函数返回的数据
context = {"titles": ["宇宙知识",
"百科知识",
"科学世界",
"生物世界",
"海洋世界",
"唯美地球",
"恐龙世界"]}
模板里面遍历取值
<h3>分类标题</h3>
{% for title in titles %}
{{ title }} |
{% endfor %}
得到的结果
我们期望每3个title显示一行,多余的换行显示。
过滤器filter
在app下新建templatetags目录,
写一个过滤器myfilter.py
from django import template
register = template.Library()
@register.filter(name='quyu')
def myquyu(value, arg):
"""除法取余,得到余数"""
return int(value) % int(arg)
在模板中引用过滤器,必须先加载{% load myfilter %}
<h3>分类标题</h3>
{% for title in titles %}
{% if forloop.counter|quyu:3 == 0 %}
{{ title }} <br>
{% else %}
{{ title }} |
{% endif %}
{% endfor %}
显示效果
再加个判断,最后一个不显示 |
{% load myfilter %}
<h3>分类标题</h3>
{% for title in titles %}
{% if forloop.counter|quyu:3 == 0 %}
{{ title }} <br>
{% elif forloop.last %}
{{ title }}
{% else %}
{{ title }} |
{% endif %}
{% endfor %}
显示效果
关于forloop变量的使用
- forloop 是for循环的内容变量
- forloop.counter 是得到当前是第几次循环,从1开始
- forloop.counter0 是得到当前是第几次循环,从0开始
- forloop.first 是否是第一次循环,返回布尔值
- forloop.last 是否是最后一次循环,返回布尔值
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-12-29 selenium+python自动化103-一闪而过的dialog如何定位
2019-12-29 jenkins学习3-Jenkins插件下载速度慢、安装失败
2019-12-29 jenkins学习2-首次输入密码后卡在空白页不加载
2019-12-29 jenkins学习1-docker快速搭建jenkins环境
2018-12-29 Linux学习5-CentOS安装Python3.6环境和pip3