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

使用 python strptime 将其转换为 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 回答