如何在Django中人性化標籤?


人性化是指使某事物更人性化或更易於人類理解。人性化標籤意味著使標籤更容易被人理解。例如,1800000000 變為 18 億,或 10000 變為 10,000。

可以實施一些簡單的更改,以將標籤轉換為更易於閱讀的格式。Django 提供了模板過濾器,可以為資料新增人性化元素,使其更具可讀性。

要啟用這些過濾器的使用,應將 **django.contrib.humanize** 新增到專案 settings.py 檔案中的 INSTALLED_APPS 中。

INSTALLED_APPS = [
   'reglogin',
   'mlmodel',
   'django.contrib.humanize',
   'django.contrib.admin',
   'django.contrib.auth',
   'django.contrib.contenttypes',
   'django.contrib.sessions',
   'django.contrib.messages',
   'django.contrib.staticfiles'
]

然後,應將 {%load humanize %} 新增到模板部分的標題部分。

現在,您已在專案中啟用了 Django 提供的人性化過濾器。

有很多模板過濾器。下面列出了一些。

  • **apnumber** - 此過濾器將數字 1 到 9 拼寫出來,對於所有其他數字,它返回相同的數字。例如:2 返回 two,12 返回 12

  • **intcomma** - 此過濾器將數字(整數或浮點數)轉換為用逗號分隔的數字的字串表示形式。例如:37900 變為 37,900

  • **intword** - 將大數轉換為可讀的文字表示形式。例如:8000000 變為 800 萬,1200000000 變為 12 億

  • **naturalday** - 靠近當前日期的日期將返回為今天、明天或昨天。

  • **naturaltime** - 此過濾器返回自特定時間以來經過多少分鐘、秒或小時的字串表示形式。例如:2001年4月6日12:57:34 變為 now,2001年4月6日12:57:04 變為 30 秒前,等等。

  • **ordinal** - 此過濾器將整數轉換為其序數表示形式,並將其儲存為字串資料型別。例如:4 變為 第4

為了測試這些過濾器的執行情況,我們將在一個 Django 專案中使用這些過濾器。建立一個 Django 專案和一個應用。在 Django 應用的 views.py 檔案中,應編寫以下程式碼。(此處省略 views.py 程式碼示例)

from django.shortcuts import render
import datetime
def homepage(request):
   current_time = datetime.datetime.now()
   context = {
      'comma': 17937,
      'word': 1800000000,
      'current_time': current_time,
      'day1': current_time - datetime.timedelta(days=1),
   }
   return render(request, 'test.html', context)

然後,test.html 應包含以下資料以列印輸出。(此處省略 test.html 程式碼示例)

{% load humanize %}
<!DOCTYPE html>
<html lang="en">
<head>
   <meta charset="UTF-8">
   <title>How to Use Humanize Tags in Django</title>
</head>
<body>
   <h2><u>Template Filters to Humanize Data</u></h2>
   <h3>1) intcomma</h3>
   <p>{{ comma }} translates to {{ comma | intcomma }}</p>
   <hr>
   <h3>2) intword</h3>
   <p>{{ word }} translates to {{ word | intword }}</p>
   <hr>
   <h3>3) naturalday</h3>
   <b>Current time is: {{ current_time }}</b>
   <p>{{ day1 }} translates to {{ day | naturalday }}</p>
   <hr>
</body>
</html>

獲得的輸出將採用以下形式 - (此處省略輸出示例)

Template Filters to Humanize Data
1)intcommma
17937 translates to 17.939
2)intword
1800000000 translates to 1.8 billion
3)naturalday
Current time is April 19th 2022, 3:43pm
April 18th 2022, 3:43 pm translates to yesterday.

透過這種方式,我們可以將過濾器新增到 Django 專案中的模板中以人性化資料。這對於幫助使用者理解貨幣兌換或時間變化特別有用。

更新於:2022年9月5日

2K+ 瀏覽量

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.