我试图建立一个我最终会通过短信发送的文字。 blurb包含以UTC为时区的日期时间对象的文本,但需要将文本本地化为用户的时区。我将用户的时区存储在db。
中我知道我可以使用timezone.activate()和timezone.deactivate()来更改当前时区,但我不知道这是否是最好的事情,当我想要的时候是在用户的本地时区打印出的日期时间的文本。我不知道改变当前时区是否会产生不必要的系统后果,即使只是很短的时间。
答案 0 :(得分:2)
使用timezone.activate()激活时区只会影响当前请求,因此无需担心“不必要的系统后果”。
通过激活中间件中的时区:
from django.utils import timezone
class TimezoneMiddleware(object):
def process_request(self, request):
if request.user.is_authenticated():
timezone.activate(request.user.get_profile().timezone)
您可以使用SMS模板中的{{ datatime }}
参数来呈现用户的本地时间。