gpt4 book ai didi

python - 如何在 Django 中设置不同的时区

转载 作者:太空宇宙 更新时间:2023-11-03 12:48:58 25 4
gpt4 key购买 nike

您好,我有一个酒店管理系统,在这个系统中,不同的酒店(子域)需要不同的时区。我该怎么做?

最佳答案

那里很不错Django documentation regarding timezones .当您说您希望每个子域有不同的时区时,您需要准确地确定您的意思。通常,Django TIME_ZONE 设置用于指定默认时区。但是,在您的情况下,您实际上需要不同的默认 TIME_ZONE 设置,具体取决于正在访问的子域。

可能实现此目标的最可靠方法是:

  • 始终将日期存储在您的 UTC 中,与分配给子域的时区无关。
  • 编写一些自定义的 Django 中间件,它将设置每个请求到达时使用的默认时区。上面链接的 Django 文档给出了一个例子。这是一个例子:
import django.utils.timezone
from pytz import timezone

class TimezoneMiddleware(object):
def process_request(self, request):
# Put logic here to choose timezone based on domain.
if request.META['HTTP_HOST'] == 'hotel1.subdomain.com':
tz = timezone('US/Eastern')
else:
tz = timezone('UTC')

if tz:
django.utils.timezone.activate(tz)
else:
django.utils.timezone.deactivate()

现在,当 Django 处理输入或显示的日期时,它将使用中间件选择的时区。这不能解决用户在不同时区与设置时区的子域的问题。通常,这个问题可以通过让每个 Django 用户存储他们的首选时区来解决,中间件将根据他们的 session 数据选择时区,如文档中所述。

关于python - 如何在 Django 中设置不同的时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18306936/

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