Django模板错误:'unicode'对象没有属性'year'

时间:2012-11-10 07:57:20

标签: python django django-templates

我从twitter上发了推文。在模板推文循环中,我试图打印多久以前这条推文被创建了。所以这就是我的尝试:

<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过滤器无缝协作?

提前致谢

2 个答案:

答案 0 :(得分:3)

使用python strptime

将其转换为DateTime对象
datetime_obj = datetime.strptime("2012-10-11", "%Y-%m-%d")

答案 1 :(得分: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 ''