我从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
过滤器无缝协作?
提前致谢
答案 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 ''