jinja2模板过滤器

jinja2模板过滤器

过滤器是通过管道符号’|‘进行使用的,例如{{ name|length }},
将返回name的长度,过滤器相当于一个函数,把当前变量传入到过滤
器中,然后过滤器根据自己的功能,返回相应的值,之后再将结果渲染
到页面中。

基本用法:

{{变量|过滤器名}}

常用过滤器:

default过滤器:

  1. 使用方式:{{ value|default('默认值') }},如果value这个key不
    存在,那么就会使用default过滤器提供的默认值。
  2. 如果你想判断一个值是否为False(例如:None、空字符串、空列表、
    空字典),那么就必须传递另外一个参数{{ value|default('默认值',boolean=True) }}
    可以使用‘or’来替代default 例如{{ signature or ‘no signature’}}。

自动转义过滤器:

  1. ’safe‘过滤器:可以关闭一个字符串的自动转义。
  2. ‘escape’过滤器:对某一改字符串进行转义。
  3. ’autoescape‘标签,可以对他里面的代码块关闭或开启自动转义。
{% autoescape off %}  {#使用闭合标签关闭自动转义,off关闭,on开启#}
<p>{{ talk|escape }}</p>
{% endautoescape %}

等等还有很多常用过滤器,请自行查阅。

自定义过滤器:

过滤器本质上是一个函数。如果在模板中调用这个过滤器,就会将这个变量的值作为
第一个参数传给过滤器函数,然后过滤器函数返回过滤后的值,需要使用到一个装饰
器,@app.template_filter('自定义过滤器名')。

@app.template_filter('my_cut')
def cut(value):
    value = value.replace('hello', '')
    return value
{{ article|my_cut }}

自定义时间处理过滤器:

create_time = datetime(2019, 1, 9, 15, 11, 0)  # 发表时间

@app.template_filter('handle_time')
def handle_time(time):
    if isinstance(time, datetime):
        now = datetime.now()
        timestamp = (now - time).total_seconds()
        if timestamp < 60:
            return '刚刚'
        elif 60 <= timestamp <= 60*60:
            minutes = timestamp/60
            return '%s分钟前' % int(minutes)
        elif 60*60 <= timestamp <= 60*60*24:
            hours = timestamp/(60*60)
            return "%s小时前" % int(hours)
        elif 60*60*24 <= timestamp <= 60*60*24*30:
            days = timestamp/(60*60*24)
            return "%s天前" % int(days)
        else:
            return time.strftime("%Y/%m/%d %H:%M")
    else:
        return time
<p>{{ create_time|handle_time }}</p>
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,533评论 0 5
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 14,008评论 0 38
  • 总结了一些开发中常用的函数: usleep() //函数延迟代码执行若干微秒。 unpack() //函数从二进制...
    ADL2022阅读 487评论 0 3
  • 通过上篇的安装,我们的环境大体上是搭建完成了。以Python版本为例,我们需要先安装Python-appium端。...
    米洛丶阅读 1,729评论 3 1
  • 初衷 项目背景是,从某网站抓取的公司企业信息去天眼查核实这个公司真实存在,最初想法是用scrapy框架搞一下,但是...
    一枚小黑阅读 466评论 1 3