python测试开发django-181.自定义过滤器(除法取余)

Posted 上海-悠悠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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 是否是最后一次循环,返回布尔值

以上是关于python测试开发django-181.自定义过滤器(除法取余)的主要内容,如果未能解决你的问题,请参考以下文章

python Django接口自动化测试

RobotFramework自动化测试框架-使用Python编写自定义的RobotFramework Lib

十年测试经验的阿里p10讲解python初阶:基础语法 python全栈自动化测试系类4-1

python测试开发django-116.Paginator分页器页数大时显示省略号...

php微信开发实现自定义菜单功能

python自定义日志函数测试