在Django模板中获取自某个时间的天、小时和分钟
我想在Django模板中获取日期,显示为天、小时和分钟。
我的view.py文件是
from django.utils import timezone
def get_user_specific_android_crave_one(request):
if request.method=="GET":
craves1=CraveData.objects.all().count()
if craves1==0:
html = render_to_string('crave/ajax/nocrave.html')
print html
return HttpResponse(html,mimetype="application/text")
else:
craves=list(CraveData.objects.all().order_by("-date"))
#fbUser = FacebookUser.objects.get(person=request.user)
#print fbUser.image
for crave in craves:
#fbUser = FacebookUser.objects.get(person=CraveData.facebookuser)
print crave
nc = timezone.now()
cc = crave.date
dc = nc-cc
secc=dc.seconds
hours = secc // 3600
secc = secc - (hours * 3600)
minutes = secc // 60
lastc = '%s hours %s minutes ago' % (hours, minutes)
reply= list(Comment.objects.filter(crave=crave))
print reply
for repl in reply:
crave.reply = reply
html = render_to_string('crave/ajax/crave.html',{"craves":craves,"lastc":lastc})
return HttpResponse(html,mimetype="application/json")
我的crave.html文件是
<div>{% for crave in craves %}
{{crave.person}}{{ crave }}<br/>
{{lastc}}<!--------- To get date in days hours and minute format since crave made--------->
{% endfor %}
</div>
在这里,我能获取时间,但所有的crave显示的时间都是一样的,比如“两个小时10分钟前”。所有的crave时间都一样,因为我从视图中获取的是同一个变量值。我想知道在模板中如何把Django的标准日期格式转换成我想要的日期格式。我使用{{crave.time}}能得到每个crave的正确日期,但这是Django的标准格式。我想显示成“1天前”、“2小时前”、“20分钟前”,这取决于crave创建的时间。我在网上搜索了很多,但没有找到相关的信息。请帮帮我。
1 个回答
4
你可以使用 naturaltime
,这里有一个 Django 的文档。下面是一个简单的例子:
{% load humanize %}
{{ datimeobject|naturaltime }}
它会显示类似于 29秒前
或者 1周2天后
这样的内容。
注意,你需要加载 humanize。