• 十五: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
  • 相关阅读:
    原型和原型链
    全局对象与临时转换
    JavaScript的数据类型转换
    JavaScript 定时任务多事件冲突问题
    PHP 5.5.38 + mysql 5.0.11 + zabbix3.0 + nginx 安装
    mysql 查找多个值并且取最大值一个和分组
    mysql 关联左表不存在数据 并 根据身份证计算查找大于65岁以上老人
    JavaScript for 循环累加 json 字符串
    jQuery.1.9 live 代替事件 on 新增内容无法触发事件
    MySQL 字段基本操作
  • 原文地址:https://www.cnblogs.com/zhongyehai/p/11782712.html
Copyright © 2020-2023  润新知