使用 Python 从 0 开发属于你的个人管理系统 09 篇 | 如何使用模板引擎渲染数据(下)

我们继续上一篇,将常用的模板语言进一步的了解,以便你之后更好的去开发使用。

模板自带过滤器函数

我们将逻辑层的数据返回给 HTML 中的模板变量,实现数据的互动,不过有时候我们还需要在前端做一些数据的过滤,从而更好的显示数据,比如对字符串大小写的转换,列表的排序等。

在 jinjia2 中,有内置了一些函数给我们使用:


abs()
float()lower()round()tojson()attr()forceescape()map()safe()trim()batch()format()max()select()truncate()capitalize()groupby()min()selectattr()unique()center()indent()pprint()slice()upper()default()int()random()sort()urlencode()dictsort()join()reject()string()urlize()escape()last()rejectattr()striptags()wordcount()filesizeformat()length()replace()sum()wordwrap()first()list()reverse()title()xmlattr()

我们可以使用这些函数来达到我们想要的效果。

比如我们在 HTML 定义模板数据的时候,如果某个变量在逻辑层没有传过来,那么这时候我们在前端得不到数据,我们可以给它一个默认的数据显示:

{{ name|default(‘小帅b’) }}

上面这个定义的意思是,我们定义了一个 name 的变量,如果逻辑层传过来的 name 值是什么就显示什么,如果没有的话,那就默认显示 小帅b。

上面提供的那些内置函数,我们都可以这么去使用,比如将得到的列表数据惊醒排序,那么你就可以这样:

{{ [6,5,8,9,2,3]|sort }}

自己也可以整一个过滤器函数

那么,如果上面这些内置好了函数,不够你用怎么办呢?

你可以在 Python 中定义函数,然后前端用同样的方式使用它。

举个例子,我们现在要使用一个函数,当发现 name 是「小帅b」的时候,就输出「帅帅帅帅帅帅」,如果不是,就输出「丑丑丑丑丑丑」。

因为内置函数没有这玩意,所以我们可以在 Python 中先定义,在你的 app.py 中,简单定义一下这个函数:

def say_handsome(name):
    if name == '小帅b':
        return '帅帅帅帅帅帅帅帅帅!!'
    else:
        return '丑丑丑丑丑丑丑丑丑!!'

接着把它添加到 app 中去:

app.add_template_filter(say_handsome, 'say_handsome')

一个简单的自定义函数过滤器搞定,我们可以像使用内置函数那样在前端使用它了:

                {{ '小帅b'|say_handsome }}
                {{ '张三'|say_handsome }}


现在输出就是这样的:

这里重复的东西可以写方法

在 HTML 中,你还可以在里面定义「函数」,在需要使用的时候,调用它就好了。

假设页面需要用户输入信息,一般我们会这样定义 input 标签来接收用户输入的信息:

<input type=”text” name=”名称” value=”小帅b”>

如果页面有多次需要用户输入信息的地方,我们并不需一直写 input 标签,我们可以

本文隐藏内容 登陆 后才可以浏览

OK,以上就是模板引擎的常用方式,掌握好它们,有利于你对网站数据的渲染展示,那么我们下篇再见,peace!

One Reply to “使用 Python 从 0 开发属于你的个人管理系统 09 篇 | 如何使用模板引擎渲染数据(下)”

发表回复