专注于 JetBrains IDEA 全家桶,永久激活,教程
持续更新 PyCharm,IDEA,WebStorm,PhpStorm,DataGrip,RubyMine,CLion,AppCode 永久激活教程

django2中自定义过滤器

一、django中自带的过滤器参考

二、django中自定义过滤器

  • 1、在app下创建一个包templatetags(名字必须是这个)
  • 2、这个app必须在settings.py中注册
  • 3、在templatetags中创建一个xx.py文件
  • 4、下面定义了2个过滤器
    from django import template
    import datetime

    register = template.Library()

    @register.filter
    def chinese_date_format(value):
        """
        一个将时间转换为中国时间的过滤器
        :param value:
        :return:
        """
        if isinstance(value, datetime.datetime):
            return "{}年{}月{}日".format(value.year, value.month, value.day)
        else:
            return value

    @register.filter
    def add_description(value, tag):
        """
        一个给标签添加tag的过滤器
        :param value:
        :param tag:
        :return:
        """
        return f'{value}({tag})'

  • 5、在需要使用自定义的过滤器的模板中(在django中指的是html页面)
    {% load [你自定义的过滤器的py文件名] %}

  • 6、使用
    ...
    <td>{{ book.name | add_description:"一本书" }}</td>
    <td>{{ book.date | chinese_date_format }}</td>
    ...

三、附加一个常用的过滤器

定义一个多少时间之前的过滤器,使用方式和上面一样的

@register.filter('time_ago')
def time_ago(value):
    """
    定义一个距离当前时间多久之前的过滤器
    :param value:
    :return:
    1.如果时间间隔小于1分钟内,那么就显示刚刚
    2.如果时间间隔大于1分钟小于1小时,那么就显示xx分钟前
    3.如果时间间隔大于1小时小于24小时,那么就显示xx小时前
    4.如果时间间隔大于24小时小于30天,那么就显示xx天前
    5.如果时间间隔大于30天,那么就显示具体时间
    """
    if not isinstance(value, datetime.datetime):
        return value
    now = datetime.datetime.now()
    timestamp = (now - value).total_seconds()
    if timestamp < 60:
        return '刚刚'
    elif timestamp >= 60 and timestamp < 60 * 60:
        return '{}分钟前'.format(int(timestamp / 60))
    elif timestamp >= 60 * 60 and timestamp < 60 * 60 * 24:
        return '{}小时前'.format(timestamp / 60 / 60)
    elif timestamp >= 60 * 60 * 24 and timestamp < 60 * 60 * 23 * 30:
        return '{}天前'.format(int(timestamp / 60 / 60 / 24))
    else:
        return value.strftime('%Y-%m-%d %H:%M')

未经允许不得转载:搜云库技术团队 » django2中自定义过滤器

JetBrains 全家桶,激活、破解、教程

提供 JetBrains 全家桶激活码、注册码、破解补丁下载及详细激活教程,支持 IntelliJ IDEA、PyCharm、WebStorm 等工具的永久激活。无论是破解教程,还是最新激活码,均可免费获得,帮助开发者解决常见激活问题,确保轻松破解并快速使用 JetBrains 软件。获取免费的破解补丁和激活码,快速解决激活难题,全面覆盖 2024/2025 版本!

联系我们联系我们