我是一个django新手,现在已经看了几天这个时区的东西了,我还是很困惑。我现在有一个时区感知日期时间值存储在UTC的postgres数据库中。但是,当我在模板上将其呈现给用户时,我希望它在用户的时区中呈现。我在模型中有一个字段,用于指定用户的时区,我可以通过视图中的field = request.user.get_profile()获取它(我正在使用django配置文件)。但我仍然不确定如何在模板中使用它来显示用户的本地时间。我试过{{value.date_time_field | timezone = field.timezone}}但这不起作用。
有人建议我应该在视图中看到这一点,而不是试图在模板中执行此操作。我不确定。
非常感谢任何帮助。
谢谢!
答案 0 :(得分:3)
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)
然后确保将您的TimezoneMiddleware包含在settings.py中的MIDDLEWARE_CLASSES中。