2

私はジャンゴの初心者で、このタイムゾーンに関するものを数日間見てきましたが、まだ混乱しています。UTC で postgres db にタイムゾーン対応の日時値が保存されました。ただし、テンプレートでユーザーに提示するときは、ユーザーのタイムゾーンで提示したいと考えています。ユーザーのタイムゾーンを指定するモデルにフィールドがあり、ビューで field = request.user.get_profile() を介して取得できます(djangoプロファイルを使用しています)。しかし、テンプレートでそれを使用してユーザーの現地時間を表示する方法はまだわかりません。{{ value.date_time_field | を試しました timezone=field.timezone }} しかし、それは機能しません。

テンプレートでやろうとするのではなく、ビューでこれを取得する必要があると誰かが提案しました。わからない。

どんな助けでも大歓迎です。

ありがとう!

4

1 に答える 1

3

Django は、バージョン 1.4 でついにタイムゾーン機能を取得しました。pytz がインストールされていることを確認したいのですが。

すべての日時値は UTC として DB に格納されます。テンプレートに日時値を表示すると、「アクティブな」タイムゾーンに合わせてローカライズされます。デフォルトでは、何か他のものを有効にしない限り、設定ファイルの TIME_ZONE 設定が使用されます。

別のタイムゾーンを有効にしたい場合は、timezone.activate を呼び出すだけです。例えば:

from django.utils import timezone
timezone.activate('US/Pacific')

これを自動化したい場合は、カスタムミドルウェアを書くだけです:

from django.utils import timezone

class TimezoneMiddleware(object):
    def process_request(self, request):
        timezone.activate(request.user.get_profile().timezone)

次に、Settings.py の MIDDLEWARE_CLASSES に TimezoneMiddleware を必ず含めてください。

于 2012-04-11T20:19:07.323 に答える