Python 为什么Django';s时间过滤器默认情况下不拾取时间_格式?

Python 为什么Django';s时间过滤器默认情况下不拾取时间_格式?,python,django,localization,internationalization,Python,Django,Localization,Internationalization,使用{today | time:“time_FORMAT”}可以正确地定位我在Django 1.2.3项目中切换语言的时间。例如,对于英语,我看到“上午12:19”,当我切换到德语时,它变为“12:19:25” 据我所知,通过查看文档和代码(和),仅仅使用{today:time}}应该做同样的事情,并默认为time\u格式,但这不起作用,它总是使用默认的英语格式 有没有办法避免编辑我所有的模板并将它们更改为{today | time:“time_FORMAT”} 同样的事情也发生在日期过滤器和日

使用
{today | time:“time_FORMAT”}
可以正确地定位我在Django 1.2.3项目中切换语言的时间。例如,对于英语,我看到
“上午12:19”
,当我切换到德语时,它变为
“12:19:25”

据我所知,通过查看文档和代码(和),仅仅使用
{today:time}}
应该做同样的事情,并默认为
time\u格式
,但这不起作用,它总是使用默认的英语格式

有没有办法避免编辑我所有的模板并将它们更改为
{today | time:“time_FORMAT”}

同样的事情也发生在
日期
过滤器和
日期_格式

文档中说(强调我的):

在没有格式字符串的情况下使用时:

 {{ value|time }}
…将使用时间\格式设置中定义的格式字符串,而不应用任何本地化

您有两个选择:

  • 编辑所有模板以进行更改,或

  • 创建一个你自己的新过滤器,按照你想要的方式进行过滤

  • 医生说(我的重点):

    在没有格式字符串的情况下使用时:

     {{ value|time }}
    
    …将使用时间\格式设置中定义的格式字符串,而不应用任何本地化

    您有两个选择:

  • 编辑所有模板以进行更改,或

  • 创建一个你自己的新过滤器,按照你想要的方式进行过滤


  • 感谢@Ned Batchelder,根据选项2,我已将以下内容添加到我的自定义模板标记文件中:

    from django.template.defaultfilters import date as defaultfilters_date, time as defaultfilters_time
    
    # FORCE {{...|date}} to be equivalent to {{...|date:"DATE_FORMAT"}} so it localizes properly, ditto for time and TIME_FORMAT
    
    @register.filter(name="date")
    def date_localized(val, arg=None):
        return defaultfilters_date(val, arg or "DATE_FORMAT")
    
    @register.filter(name="time")
    def time_localized(val, arg=None):
        return defaultfilters_time(val, arg or "TIME_FORMAT")
    

    感谢@Ned Batchelder,根据选项2,我已将以下内容添加到我的自定义模板标记文件中:

    from django.template.defaultfilters import date as defaultfilters_date, time as defaultfilters_time
    
    # FORCE {{...|date}} to be equivalent to {{...|date:"DATE_FORMAT"}} so it localizes properly, ditto for time and TIME_FORMAT
    
    @register.filter(name="date")
    def date_localized(val, arg=None):
        return defaultfilters_date(val, arg or "DATE_FORMAT")
    
    @register.filter(name="time")
    def time_localized(val, arg=None):
        return defaultfilters_time(val, arg or "TIME_FORMAT")
    

    嗯,我想我没看到那个些文件。不过(假设你正在看的话)它还说:“注意,预定义的格式是依赖于语言环境的。”在最底层,“在Django 1.2中发生了更改:预定义的格式现在可以受当前语言环境的影响。”所以,听起来它们应该可以“受影响”……嗯,我想我没有看到那一部分文档。不过(假设你正在看)它还说:“请注意,预定义的格式是依赖于语言环境的。”在最底层,“在Django 1.2中发生了更改:预定义的格式现在可以受当前语言环境的影响。”所以,听起来它们应该可以“受影响”。。。