zoukankan      html  css  js  c++  java
  • 十五:jinja2过滤器之实现自定义过滤器

    过滤器的本质就是函数,如果在模板中调用这个过滤器,那么就会将这个变量的值作为第一个参数传给过滤器函数,然后将函数的返回值作为滤器的返回值

    1、在python文件中写好过滤的函数和逻辑
    2、将将函数注册到模板过滤器中:@app.template_filter('过滤器名')
    3、在模板中调用过滤器:变量|过滤器名

    实现一个把‘hello’替换成''的过滤器

    也可以改为模板里面自己设置要替换的内容

    实现时间处理过滤器

    返回time距离现在的时间是多久
    1、如果时间间隔小于1分钟,就显示“刚刚”
    2、如果时间间隔大于等于1分钟小于1小时,就显示“xx分钟前”
    3、如果时间间隔大于等于1小时小于24小时,就显示“xx小时前”
    4、如果时间间隔大于等于24小时小于30天,就显示“xx天前”
    5、否则就显示具体的时间

    @app.route('/')
    def index():
    data = {'time': datetime(2019, 11, 2, 16, 0, 0)}
    return render_template('index.html', **data)


    @app.template_filter('time_handle')
    def time_handle(time):
    """ 返回time距离现在的时间是多久 """
    if isinstance(time, datetime):
    timestamp = (datetime.now() - time).total_seconds()
    if timestamp < 60:
    return '刚刚'
    elif timestamp >= 60 and timestamp < 60 * 60:
    return f'{int(timestamp / 60)}分钟前'
    elif timestamp >= 60 * 60 and timestamp < 60 * 60 * 24:
    return f'{int(timestamp / (60 * 60))}小时前'
    elif timestamp >= 60 * 60 * 24 and timestamp < 60 * 60 * 24 * 30:
    return f'{int(timestamp / (60 * 60 * 24))}天前'
    else:
    return time.strftime('%Y-%m-%d %H:%M')
    else:
    return time
  • 相关阅读:
    解决“Caused by: org.gradle.api.plugins.UnknownPluginException: Plugin with id 'org.springframework.boot' not found.”
    linux随机生成密码
    NFS网络共享文件系统
    shell实现带颜色输出的进度条
    【AtCoder】 ARC 101
    【AtCoder】 ARC 102
    【AtCoder】 ARC 103
    20190814校内模拟赛
    「2019-8-13提高模拟赛」树 (tree)
    [PA2014]Fiolki
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11782712.html
Copyright © 2011-2022 走看看