我是一个 django 新手,已经看了好几天这个时区的东西了,我仍然很困惑。 我现在有一个时区感知的日期时间值存储在 UTC 的 postgres 数据库中。 但是,当我在模板上向用户显示它时,我希望它以用户的时区显示。 我在模型中有一个指定用户时区的字段,我可以通过视图中的字段 = request.user.get_profile() 来获取它(我使用的是 django 配置文件)。 但我仍然不确定如何在模板中使用它来显示用户的本地时间。 我尝试了{{ value.date_time_field | timezone=field.timezone }},但这不起作用。
有人建议我应该在视图中解决这个问题,而不是尝试在模板中执行此操作。 我不确定。
任何帮助将不胜感激。
谢谢!
Django 终于在 1.4 版本中获得了时区功能。 虽然你想确保安装了 pytz。
所有日期时间值都将以 UTC 格式存储在数据库中。 当您在模板中显示日期时间值时,它将本地化为"活动"时区。默认情况下,除非您激活其他内容,否则它将使用设置文件中的TIME_ZONE设置。
如果您想激活另一个时区,只需调用timezone.activate。 例如:
from django.utils import timezone
timezone.activate('US/Pacific')
如果要自动执行此操作,只需编写一个自定义中间件:
from django.utils import timezone
class TimezoneMiddleware(object):
def process_request(self, request):
timezone.activate(request.user.get_profile().timezone)
然后确保在 settings.py 的MIDDLEWARE_CLASSES中包含您的时区中间件。