轉自 https://jackeygao.io/words/django-tips-02-humanize.html
翻譯整理自: 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
Python
INSTALLED_APPS = [
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'django.contrib.humanize',
]
然後在 template 中, 載入此 APP 下的標籤。
Django/Jinja
{% load humanize %}
使用過濾器也非常簡單, 比如使用naturaltime過濾器.
Django/Jinja
{% 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 %}
功能表
過濾器 | 作用 | 舉例 |
---|---|---|
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 |