django模板通过自定义过滤器格式化时间戳

时间:2022-03-31 22:16:20 类型:python
字号:    

django模板不能写py代码,那么怎么把世间戳转换成日期时间格式呢,我们可以通过django提供的自定义过滤器功能来实现

1、在应用目录下创建 templatetags 目录(与 templates 目录同级,目录名只能是 templatetags)。

2、在 templatetags 目录下创建任意 py 文件,如:my_tags.py

3、my_tags.py 文件代码如下:

from django import template
import time

register = template.Library()   #register的名字是固定的,不可改变


@register.filter
# 格式化时间戳
def formTime(t,f):
    return time.strftime(f, time.localtime(float(t)))

修改 settings.py 文件的 TEMPLATES 选项配置,添加 libraries 配置:

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')]
        ,
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
            "libraries":{                          # 添加这边三行配置
                'my_tags':'templatetags.my_tags'   # 添加这边三行配置
            }                                      # 添加这边三行配置
        },
    },
]

4、在使用自定义标签和过滤器前,要在 html 文件 body 的最上方中导入该 py 文件。

   {% load my_tags %}

5, 模板中使用

 

{{ row.addtime | formTime:"%Y-%m-%d %H:%M:%S"}}


<