0
用户注销后,Django似乎记得上次激活的时区。注销Django当前时区注销后
- 用户讯息形成 - 对形式的日期时间解释为UTC
- 用户登录与澳大利亚/悉尼的优选时区
- 用户讯息形成 - 上解释为澳大利亚/悉尼形式日期时间
- 用户注销
- 用户帖子窗体上的datetime仍然被解释为澳大利亚悉尼,尽管TIME_ZONE设置为UTC
- 重新启动服务器,然后用户(仍未登录)发布表单 - datetime on form inte rpreted为UTC
我
TIME_ZONE = 'UTC'
USE_TZ = True
和中间件:
class TimezoneMiddleware(object):
def process_request(self, request):
tz = request.session.get('django_timezone', '')
if tz:
timezone.activate(tz)
elif request.user.is_authenticated():
preferredTimezone = request.user.get_profile().preferredTimezone
timezone.activate(preferredTimezone)
我认为Django的可能记住最后一次先前激活的时区,如为activate
此评论指出功能来源:
def activate(timezone):
"""
Sets the time zone for the current thread.
The ``timezone`` argument must be an instance of a tzinfo subclass or a
time zone name. If it is a time zone name, pytz is required.
"""
if isinstance(timezone, tzinfo):
_active.value = timezone
有人可以证实这一点吗?解决这个问题的最好方法是在中间件中有一个叫deactivate
的else语句吗?