我什么时候应该在Django(1.4)中激活/停用当前时区?

fan*_*err 10 django

所以Django 1.4刚刚发布时区支持,但我对如何以及何时利用文档不断提及的"当前时区"感到困惑.我应该何时为用户激活和停用当前时区?

我对Django很新,所以我甚至不确定当前时区的上下文是否适用于特定用户或Web服务器(跨越所有用户).对此的任何澄清都会很棒.

Blu*_*ict 12

Django 1.4中的新功能使得在django模板中呈现用户的本地时间/日期更容易.

首先,您需要设置TIME_ZONE/USE_TZ参数.

然后,为了使用"当前时区"功能,您需要知道用户的时区.可能最可靠的方法是直接询问用户并将此信息保存在用户配置文件/会话中.此外,您可以尝试通过javascript使用getTimezoneOffset()函数设置时区cookie,或尝试按位置执行一些geoip魔术和图形时区.

一旦知道用户的时区值,就可以在中间件中激活它:

class MyTimezoneMiddleware(object):
    def process_request(self, request):
        user_timezone = request.session.get('current_timezone')

        if user_timezone:
             timezone.activate(user_timezone)
        else:
             timezone.deactivate()
Run Code Online (Sandbox Code Playgroud)

  • 一定要有一个else子句去激活时区.否则,最后激活的时区将用于所有连续请求,直到另一个时区被激活. (5认同)