0

ツイッターからツイートを取得しました。テンプレートのツイートループで、このツイートが作成されたのはどれくらい前かを印刷しようとしました。だからこれは私が試したものです:

<li class="twitter-feed-block-content">
  {{ tweet.text }}
  <span class="when">
    {{ tweet.created_at|timesince }}
  </span>
</li>

{{tweet.text}}正しく印刷されています。ただし、次の行を追加すると{{ tweet.created_at|timesince }}、次のエラーが発生します。

Exception Value:     'unicode' object has no attribute 'year' Exception
Location:   REMOVED_BY_ME/lib/python2.7/site-packages/django/utils/timesince.py
in timesince, line 29 Python
Executable: REMOVED_BY_ME/bin/python
Python Version: 2.7.2

tweet.created_at文字列です。これが理由ですか?timesinceもしそうなら、フィルターとシームレスに動作するように変換するにはどうすればよいですか?

前もって感謝します

4

2 に答える 2

3

pythonstrptimeを使用してDateTimeオブジェクトに変換します

datetime_obj = datetime.strptime("2012-10-11", "%Y-%m-%d")
于 2012-11-10T07:59:49.407 に答える
1

わかりました、これは私が質問を解決した方法です。私が言ったように、私は最後の手段としてのみカスタムフィルターを作成したかったのです。

だから、私はという名前のフィルターを作成しましたstrtotimesince。誰かが同様の問題に直面した場合に役立つように、ここに置いています。

from django.utils import timesince

@register.filter(name='strtotimesince')
def strtotimesince(value,format=None):
    if not value:
        return u''

    if not format:
        format = "%a %b %d %H:%M:%S +0000 %Y"
    try:
        convert_to_datetime = datetime.strptime(value, format)
        if convert_to_datetime:
            return "%s ago" % timesince.timesince(convert_to_datetime)
    except:
        return ''
于 2012-11-11T01:19:42.507 に答える