You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django自定义模板标签中调用内置date过滤器?

实现方案

完全可以实现,你可以直接在自定义过滤器内部导入并调用Django原生的date过滤器,复用它的本地化处理能力,不需要自己额外实现日期格式化逻辑。

完整实现代码

你需要先导入Django原生的过滤器工具,然后把格式化逻辑整合到你的自定义过滤器中,示例代码如下:

from django import template
from django.template.defaultfilters import date, capfirst

register = template.Library()

@register.filter
def delivery_dates_formating(value):
    # 处理空输入避免报错
    if not value:
        return ""
    
    # 提取起止日期
    date_len = len(value)
    if date_len == 1:
        start = end = value[0]
        # 单日期格式:星期, 日期 月份
        return f"{capfirst(date(start, 'l'))}, {date(start, 'j F')}"
    elif date_len == 2:
        start, end = value[0], value[1]
    else:
        # 长度为3的情况取首尾日期
        start, end = value[0], value[2]
    
    # 多日期拼接格式
    week_part = f"{capfirst(date(start, 'l'))} - {capfirst(date(end, 'l'))}"
    # 若需要支持跨月显示,可加月份判断逻辑调整日期部分格式
    date_part = f"{date(start, 'j')}-{date(end, 'j F')}"
    return f"{week_part}, {date_part}"

使用说明

  • 代码中调用的date过滤器和你在模板中直接使用|date的效果完全一致,会自动继承项目配置的本地化规则,不需要额外处理多语言适配
  • 格式字符串可以根据你的需求自由调整,比如你之前使用的E j, l可以直接替换到对应位置即可
  • 部署后直接按照你预期的方式调用即可:{{parcel.pickup_dates|delivery_dates_formating}}

内容的提问来源于stack exchange,提问作者red_wine_drinker

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 00:36:03