2012-03-31 75 views
10

因此Django 1.4剛剛發佈時區支持,但我對如何以及何時利用文檔不斷提及的「當前時區」感到困惑。何時應該爲用戶激活和停用當前時區?什麼時候應該在Django(1.4)中激活/關閉當前時區?

我對Django非常新穎,所以我甚至不確定當前時區的上下文是否適用於特定用戶或Web服務器(跨越所有用戶)。對此的任何澄清都會很好。

回答

12

Django 1.4中的新功能使得在django模板中簡單渲染用戶的本地時間/日期變得容易一些。

首先,您需要設置TIME_ZONE/USE_TZ參數。

然後,爲了使用「當前時區」功能,您需要知道用戶的時區。可能最可靠的方法是直接詢問用戶並將這些信息保存在用戶配置文件/會話中。此外,您可以嘗試通過使用getTimezoneOffset()函數通過javascript設置時區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() 
+5

一定還要有一個else子句停用時區。否則,最後一個激活的時區將用於所有連續的請求,直到另一個時區被激活。 – bouke 2013-07-01 08:05:06

+0

非常好的一點,因爲行爲在開發/生產中不一樣。 – 2015-06-20 08:26:48

相關問題