Skip to main content
 首页 » 编程设计

Python/Django 模板时区问题

2025年05月04日22bhlsheji

我遇到了以下问题,无法弄清楚我在这里遗漏了什么。

我已经在 settings.py 中启用了时区

设置.py

TIME_ZONE = '美国/芝加哥'

USE_TZ = True

用例

现在,当我在下午 3 点 15 分(本地时间)创建对象时,我将以下日期存储在数据库的 created_at 字段中。

created_at = models.DateTimeField(auto_now_add=True)

2014-12-12 11:03:48

当我在我的模板中呈现该日期时,我得到以下值。

{{ image.created_at }} = > 12 月2014 年 12 点,上午 5:03

测试用例

    from datetime import datetime 
    from dateutil.tz import tzutc, tzlocal 
 
    utc = datetime.now(tzutc()) 
    print('UTC:   ' + str(utc)) 
 
    local = utc.astimezone(tzlocal()) 
    print('Local: ' + str(local)) 

我在这里得到正确的日期时间。当我使用 myobject.created_at.astimezone(tzlocal()) 它也返回正确。但它在模板中时我提前 1 小时。为什么?我也尝试了 |local 过滤器,但没有用

我错过了什么?

请您参考如下方法:

将下面的代码片段添加到 base.html

{% load tz %} 
 
{% timezone "Asia/Kolkata" %} 
  <All content goes here> 
{% endtimezone %} 

将此继承到所有模板。一切都在“亚洲/加尔各答”时区呈现