djangoのpythonコード内で時間のフォーマットを取得する

djangoローカライズされたフォーマットで時間の文字列を取得したい時は、

from django.utils.formats import date_format

をDateTimeFieldとかDateFieldと"DATETIME_FORMAT"を渡したりすれば文字列が返ってくるけど、時間があってない(l10nされてない)。 そんなときは、諦めてテンプレートがレンダーした結果を返してもらえばいい。

from django.template import Context, Template

def get_datestr(datetime):
    t = Template("{{ date }}")
    c = Context({"date": datetime})
    return t.render(c)

こうすれば、ローカライズされて時間も日本のだし、フォーマットも日本のになる。まぁローカライズの設定がちゃんとしていたらだけど。

ちなみにローカライズのフォーマットは

django.conf.locale.ja.formats

にある。 ちなみにちなみにこのフォーマットは普通のフォーマットじゃないみたい。 websocketやるとTemplateをconsumers内で使った方がいいんじゃないかとふと思った。 あと数日以内に完成するかなぁ