custom_filter

自定义过滤器

1 步骤
  1. 一定要注意必须安装app
INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 必须安装的app
    "article"
]
  1. 创建一个templatetags python包, 文件夹下新建模块, 如custom.py

  2. 引入template.Library并实例化

from django import template
register = template.Library()
  1. 定义过滤器函数
def handle_date(value):
    pass
  1. 注册过滤器
# name: 过滤器名称, 默认为过滤器函数名
# filter_func: 过滤器函数
register.filter(name="date", filter_func=hand_date)

当然,你也可以使用register.filter装饰器完成第四三步

@register.filter("handDate")
def hand_date(value: datetime)->str:
    if not isinstance(value, datetime):
        return str(value)

    now = datetime.now()

    # 二个datetime对象相减 得到了一个 timedelta 对象
    # 利用 `total_seconds` 方法
    timeStamp = int((now - value).total_seconds())

    if 0 <= timeStamp <= 60:
        return "刚刚"
    elif 60 < timeStamp <= (60*60):
        return "%s分钟前" % (timeStamp//60)
    elif (60*60) < timeStamp <= (24*60*60):
        return "%s小时前" % (timeStamp//(60*60))
    elif (24*60*60) < timeStamp <= (30*24*60*60):
        return "%s天前" % (timeStamp//(24*60*60))
    elif (30*24*60*60) < timeStamp <= (12*30*24*60*60):
        return "%s月前" % (timeStamp//(30*2460*60))
    else:
        return value.strftime("%Y/%m/%d %H:%M")
  1. 利用load标签在模板引入过滤器, 一般直接引入模块名custom
{% load custom %}

这样你就可以愉快地在模板里面使用过滤器, 也完成自定义过滤器

注意

  1. 一定要检查App是否安装
  2. 注意templatetags命名
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值