[Flask][13]Jinja2模板设计文档——内建测试列表、全局函数列表

版权声明

本文出自 “ 幻冥极地 ” 博客 ,作者 小貘 采用 署名-非商业性使用-相同方式共享 协议。转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。
https://www.moorehy.com/archives/290

内建测试列表 (List of Builtin Tests)

callable(object)
返回对象是否可调用(如,某种函数)。注意,当类的实例中包含 __call__() 方法时,它是可调用的。

defined(value)
如果变量被定义,则返回 true :

为了用简单的方法设置未定义变量,请查看 default()

divisibleby(value, num)
检查一个变量是否可被一个数字除尽。
equalto(value, other)
检查一个对象是否与另一个对象有相同的值:

这似乎是一个无用的测试,因为他与 == 运算符完全一样,但是当与 selectattr 函数一起使用时,它就很有用了:

2.8版本中引入

escaped(value)
检查值是否被转义。
even(value)
如果变量为偶数,则返回 true 。
greaterthan(value, other)
检查 value 是否大于 other 。
iterable(value)
检查对象是否可遍历。
lessthan(value, other)
检查 value 是否小于 other 。
lower(value)
如果变量为小写字符,则返回 true 。
mapping(value)
如果对象是一个映射(字典等),则返回 true 。
2.6版本中引入
none(value)
如果变量为 none ,则返回 true 。
number(value)
如果变量是一个数字,则返回 true 。
odd(value)
如果变量是奇数,则返回 true 。
sameas(value, other)
检查一个对象是否与另一个对象指向相同的内存地址:

sequence(value)
如果变量是一个序列,则返回 true 。序列是可迭代的变量。
string(value)
如果对象时一个字符串,返回 true 。
undefined(value)
defined() 相反。
upper(value)
如果变量是大写字符,则返回 true 。

全局函数列表 (List of Global Functions)

默认情况下,下列函数在全局范围内可用:

range([start, ]stop[, step])
返回包含整数等差数列的列表。 range(i, j) 将返回 [i, i+1, i+2, ..., j-1] ;start(!) 默认为 。当提供 step 参数时,将指定递增(或递减)。例如, range(4)range(0, 4, 1) 将返回 [0, 1, 2, 3] 。端点(4)是被忽略的!这正是对于一个 4 元素列表的有效索引。
这对于多次重复一个模板语句块很有用,如,填充一个列表。假设您有 7 个用户在列表中,但是您想渲染三个空条目,从而使用 CSS 设置其高度:

lipsum(n=5, html=True, min=20, max=100)
为模板生成一些假数据。默认配置下,生成五个 HTML 段落,每个段落包含 20~100 个字。如果 html 参数为 False ,将返回常规文本。在为了测试布局而生成简单内容时很有用。
dict(**items)
字典文字的便捷替代。 {'foo': 'bar'}dict(foo='bar') 相同。
class cycler(*items)
cycler 允许您在数值间循环,类似于 loop.cycle 。但是不像 loop.cycle ,您可以在循环外使用 cycler ,或者跨多个循环。
如果您想在顶部显示一个文件夹和文件夹中文件的列表,但是再同一列表中使用交替的行颜色, cycler 可能非常有用。
下例展示了如何使用 cycler

cycler 包含如下的属性和方法:

reset(): 重置循环到第一个条目。

next(): 移动到下一个条目,然后返回当时的当前条目。

current: 返回当前条目。

Jinja 2.1中引入

class joiner(sep=’, ‘)
一个辅助类,可用于”连接”多个部分。可以向 joiner 传入字符串,在每次调用时返回,除第一次调用(首次调用时返回一个空字串)。您可以使用它进行连接操作:

Jinja 2.1中引入

2 thoughts on “[Flask][13]Jinja2模板设计文档——内建测试列表、全局函数列表

发表评论

电子邮件地址不会被公开。 必填项已用*标注