Django小技巧02: humanize

#humanize

翻译整理自: simpleisbetterthancomplex.com

Django 附带一组模板过滤器, 可为您的数据添加人性化选项。它用于将数字或者日期转化为人类友好可读的格式.

就我个人来说, 我使用模板过滤器naturaltime非常频繁。 比如我在2018-10-25 11:33:24定了个外卖, 在等待外卖的过程中, 订单页面的时间显示为21 minutes ago(考虑到目前是2018-10-25 11:54:46) 更好友好一点, 我能清楚的知道我等待了多长时间。 而不是2018-10-25 11:54:46这样的时间, 让我再计算一遍.

使用方法也非常简单:

settings.py INSTALLED_APPS 加入django.contrib.humanize.

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'django.contrib.humanize',
]
<\>Python

然后在 template 中, 载入此 APP 下的标签。

{% load humanize %}
<\>Django

使用过滤器也非常简单, 比如使用naturaltime过滤器.

{% extends 'base.html' %}

{% load humanize %}

{% block content %}
  <ul>
    {% for notification in notifications %}
      <li>
        {{ notification }}
        <small>{{ notification.date|naturaltime }}</small>
      </li>
    {% empty %}
      <li>You have no unread notification.</li>
    {% endfor %}
  </ul>
{% endblock %}
<\>Django
  • 功能表
过滤器 作用 举例
apnumber 英文数字 1 => one
intcomma 三位逗号数字 4500000 => 4,500,000
intword 文本数字 4500000 => 4.5 million
naturalday 友好的日期 2018-10-24 => yesterday
naturaltime 友好的时间 2018-10-25 12:00:01 => a minute ago.
ordinal 序数字符串 3 => 3rd

阅读更多关于humanize的文档. Django Documentation