Skip to main content
 首页 » 编程设计

python之从 django 模板中获取以天、小时和分钟为单位的日期

2024年08月27日27zhenyulu

我想在 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> 

在这里,我得到了时间,但对于所有的渴望,我得到了同样的书,比如“两小时 10 分钟前”它对于所有的渴望都是一样的,因为我从 View 中得到了相同的变量值。 我想知道在模板中如何将 django 的标准日期格式转换为我想要的日期格式。 我正在使用 {{crave.time}} 为每个渴望找到合适的日期。但这是 django 的标准格式。我想显示 1 天前、2 小时前、20 分钟前,具体取决于对时间的渴望。 我在网上搜索了很多但没有得到相关数据。请帮助我。

请您参考如下方法:

你可以使用naturaltime,这里是Django documentation .一个简短的例子:

{% load humanize %} 
{{ datimeobject|naturaltime }} 

它将显示类似29 秒前 或1 周,2 天后。

注意需要load humanize