Django自然时间标签

时间:2017-01-24 13:26:39

标签: django templates humanize

我想收到时差,所以我添加了' django.contrib.humanize'已安装的应用,以及' {%load humanize%}'到我的模板,并在下面使用它:

{% for notification in request.session.notifications %}
       <li> <div class="media">
            <div class="media-left">
            <div class="media-object">
                 <img data-src="holder.js/50x50?bg=cccccc" class="img-circle" alt="50x50" style="width: 50px; height: 50px;" src="{% static 'img/profile.png' %}" data-holder-rendered="true">
             </div>
             </div>
             <div class="media-body">
             <strong class="notification-title"><a href="#">{{ notification.fields.actor_object_id }} {{ notification.fields.verb }} {{ notification.fields.target_object_id }}</a></strong>
             <div class="notification-meta">
                  <small class="timestamp">{{ notification.fields.timestamp|naturaltime }}</small>
            </div>
            </div>
            </div> 
       </li>
{% endfor %}

但结果再次相同:2017-01-18T10:59:11Z

1 个答案:

答案 0 :(得分:0)

正如Resley所说,当数据序列化为JSON时,timestamp字段转换为字典。我创建了自定义标记并在我的模板中使用它。

from django import template
import dateutil.parser

register = template.Library()

@register.filter(name='to_date') 
def to_date(value):
    print type(dateutil.parser.parse(value))
    return dateutil.parser.parse(value)

然后在模板中,将行更改为:

<small class="timestamp">{{ notification.fields.timestamp|to_date|naturaltime }}</small>