2012-03-31 17 views
10

Django 1.4はタイムゾーンをサポートするだけでリリースされましたが、ドキュメントが言及している「現在のタイムゾーン」をいつどのように利用するのかと混同しています。ユーザーの現在のタイムゾーンをいつ有効にしたり無効にしたりする必要がありますか?いつDjango(1.4)の現在のタイムゾーンを有効/無効にする必要がありますか?

私はDjangoでかなり新しく、現在のタイムゾーンのコンテキストが特定のユーザーまたはWebサーバー(すべてのユーザーに適用されます)に適用されるかどうかはわかりません。これについての明確化は素晴らしいでしょう。

答えて

12

Django 1.4の新機能により、ユーザーのローカル日時をDjangoテンプレートに簡単にレンダリングできます。

まず、TIME_ZONE/USE_TZパラメータを設定する必要があります。

次に、「現在のタイムゾーン」機能を使用するには、ユーザーのタイムゾーンを知る必要があります。おそらく最も信頼性の高い方法は、ユーザーに直接質問し、この情報をユーザープロファイル/セッションに保存することです。また、getTimezoneOffset()機能を利用することで、JavaScript経由でタイムゾーンクッキーを設定したり、場所によってジオープマジックやタイムゾーンを描こうとすることもできます。

ユーザーのタイムゾーン値を知ったら、ミドルウェアでそれを有効にすることができます。

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

も、タイムゾーンを不活性化する他の節を持つことを確認してください。それ以外の場合は、別のタイムゾーンがアクティブになるまで、最後にアクティブ化されたタイムゾーンがすべての連続したリクエストに使用されます。 – bouke

+0

開発/生産において行動が同じではないので、非常に良い点です。 –

関連する問題