Django自定义过滤器

官方文档指南

今天开发的时候遇到这样一个情景:Django从MongoDB中读取一个包含时间戳字段的对象,放在页面模板的时候,解析不出来。使用过滤器{{ comment.comment_time|date:"Y-m-d H:i:s" }}无效,解析结果为空,也就是说前端页面显示为空白,通过使用Pycharm查看date过滤器的源码可以看到,这些过滤器被放在django/template/detaultfilters.py中,跟时间相关的只有四个过滤器:date、time、timesince_filter、timeuntil_filter,没有timestamp相关的过滤器,所以还是要自己动手丰衣足食。

添加templatetags 模块

新建文件timestamp_parse.py

添加如下代码:

from django import template

from datetime import datetime

register = template.Library()

@register.filter(expects_localtime=True, is_safe=False)

def timestamp_parse(value, format_string):

if value in (None, ''):

return ''

return datetime.fromtimestamp(value).strftime('%Y-%m-%d %X')

模板页面

{% load timestamp_parse %}

{{ comment.comment_time|timestamp_parse:"Y-m-d H:i:s" }}这些在官方文档里面也能找到,我这里提出来,用起来可能会快一点。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180802G1BVOW00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券