gpt4 book ai didi

django - 对如何根据本地用户时间定制日期时间模板表示感到困惑

转载 作者:行者123 更新时间:2023-12-04 05:50:31 24 4
gpt4 key购买 nike

我是 django 新手,几天来一直在看这个时区的东西,但我仍然很困惑。我现在在 UTC 的 postgres 数据库中存储了一个时区感知日期时间值。但是,当我在模板上将它呈现给用户时,我希望它以用户的时区呈现。我在模型中有一个字段,用于指定用户的时区,我可以通过 View 中的 field = request.user.get_profile() 获取它(我正在使用 django 配置文件)。但是我仍然不确定如何在模板中使用它来显示用户的本地时间。我试过 {{ value.date_time_field | timezone=field.timezone }} 但这不起作用。

有人建议我应该在 View 中解决这个问题,而不是尝试在模板中进行。我不知道。

任何帮助是极大的赞赏。

谢谢!

最佳答案

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 中包含您的 TimezoneMiddleware。

关于django - 对如何根据本地用户时间定制日期时间模板表示感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10113238/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com