2

私はdjangoで小さな問題に取り組んできましたが、それを理解することができませんでした。Godaddy vpsで実行されているdjangoアプリがあり、views.pyにはこれらの行が関数定義の一部として含まれています

    currtime=datetime.datetime.now()
            return render_to_response('test.html',{'currtime' : currtime })

私のtest.htmlでは、テンプレートを使用してcurrtimeを取得しています

          {% load tz %}
          {% localtime on %} 
          <p>{{currtime}}</p>
          {% endlocaltime %}

django のタイムゾーン対応の datetime オブジェクトのポイントは、テンプレートを介して HTML をレンダリングするときに、時刻をローカル時刻に自動的に変換することだと思います。インドにいますが、 CDT にあるテキサスの時間と同じ現在の時間値をまだ取得しています。これを機能させたい理由は、日時が UTC で保存されているデータベースがあり、ユーザーの地理的な場所に基づいて、時刻を現地時間で表示する (つまり、UTC から現地時間に変換する) ことです。どんな助けでも大歓迎です、ありがとう。

4

1 に答える 1

0

関連する問題を偶然グーグルで検索してここにたどり着きましたが、誰かがそれを見つけた場合に備えて、答えようと思いました...

localtime はサーバー上のローカル時間を意味するため (設定で定義されているタイムゾーンで表されます)、目的の機能が機能しませんでした。サーバー上で実行されている django アプリには、クライアントのタイムゾーンを把握する方法がありません。jstzなどを使用して、ブラウザーでタイムゾーンを検出する必要があります。

より堅牢な解決策は、ユーザーが自分のタイムゾーンを選択できるようにすることですが、自動検出を使用して選択を設定することもできます (ほとんどの場合、ユーザーは [OK] を押すだけで済みます)。もちろん、これをサーバーに保存し、その時点から、ユーザーのタイムゾーンを使用してテンプレートを生成できます。

{% loadtz %}
{% timezone user.timezone %}
.....
{% endtimezone %}
于 2015-04-30T23:36:19.277 に答える