我正在尝试构建一个文本简介,最终我将在短信中发送。 简介包括以 UTC 为时区的日期时间对象的文本,但需要改为针对用户的时区本地化文本。 我将用户的时区存储在数据库中。
我知道我可以使用timezone.activate()和timezone.deactivate()来更改当前时区,但我不知道这是否是最好的选择,因为我想要的只是日期时间的文本打印在用户的本地时区。 我不知道更改当前时区是否会产生不必要的系统后果,即使只是很短的时间。
使用 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 }}
参数呈现用户的本地时间。