2

最終的に SMS メッセージで送信するテキストの宣伝文を作成しようとしています。宣伝文句には、タイムゾーンとして UTC を持つ datetime オブジェクトのテキストが含まれていますが、代わりにユーザーのタイムゾーンに合わせてテキストをローカライズする必要があります。ユーザーのタイムゾーンをデータベースに保存しています。

timezone.activate() と timezone.deactivate() を使用して現在のタイムゾーンを変更できることは知っていますが、印刷する日時のテキストだけが必要な場合、それが最善の方法であるかどうかはわかりませんユーザーのローカル タイムゾーンで。たとえ短時間であっても、現在のタイムゾーンを変更するとシステムに望ましくない結果が生じるかどうかはわかりません。

4

1 に答える 1

3

timezone.activate() を使用してタイムゾーンをアクティブ化すると、現在のリクエストにのみ影響するため、心配する「望ましくないシステムの結果」は実際にはありません。

ミドルウェアでタイムゾーンを有効にすることにより:

from django.utils import timezone

class TimezoneMiddleware(object):
    def process_request(self, request):

        if request.user.is_authenticated():
            timezone.activate(request.user.get_profile().timezone)

{{ datatime }}SMS テンプレートでパラメーターを使用して、ユーザーの現地時間をレンダリングできます。

于 2012-04-26T02:00:11.940 に答える