在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ Python/ 格式本地化
點(diǎn)擊劫持保護(hù)
安全問題歸檔
Model 類參考
將遺留數(shù)據(jù)庫整合到Django
關(guān)聯(lián)對象參考
內(nèi)建基于類的視圖的API
聚合
Django 中的用戶認(rèn)證
django.contrib.humanize
Django管理文檔生成器
分頁
使用Django輸出CSV
加密簽名
文件儲存API
安全
Django中的測試
國際化和本地化
為Django編寫首個補(bǔ)丁
條件表達(dá)式
日志
模型元選項
部署靜態(tài)文件
執(zhí)行查詢
使用Django認(rèn)證系統(tǒng)
基于類的視圖
中間件
編寫自定義的django-admin命令
Django 的設(shè)置
格式本地化
數(shù)據(jù)庫訪問優(yōu)化
錯誤報告
基于類的內(nèi)建通用視圖
編寫自定義存儲系統(tǒng)
編寫你的第一個 Django 程序 第3部分
編寫數(shù)據(jù)庫遷移
使用表單
編寫你的第一個 Django 程序 第2部分
編寫你的第一個 Django 程序 第1部分
如何使用會話
系統(tǒng)檢查框架
新手入門
信號
編寫視圖
如何使用WSGI 部署
編寫你的第一個Django應(yīng)用,第6部分
常見的網(wǎng)站應(yīng)用工具
Widgets
內(nèi)建的視圖
模型實例參考
視圖層
Django中的密碼管理
高級教程:如何編寫可重用的應(yīng)用
國際化和本地化
"本地特色"附加功能
TemplateResponse 和 SimpleTemplateResponse
模式編輯器
文件上傳
快速安裝指南
部署 Django
表單 API
表單素材 ( <code>Media</code> 類)
管理文件
其它核心功能
查找 API 參考
表單
Admin
數(shù)據(jù)庫函數(shù)
自定義查找
使用基于類的視圖處理表單
管理操作
開發(fā)過程
編寫你的第一個Django應(yīng)用,第5部分
進(jìn)行原始的sql查詢
模型層
多數(shù)據(jù)庫
編寫你的第一個 Django 程序 第4部分
Django安全
Django 初探
Django異常
重定向應(yīng)用
按需內(nèi)容處理
管理器
視圖裝飾器
驗證器
使用Django輸出PDF
File對象
Django 的快捷函數(shù)
基于類的通用視圖 —— 索引
為模型提供初始數(shù)據(jù)
模板層
URL調(diào)度器
中間件
模型

格式本地化

概覽

Django的格式化系統(tǒng)可以在模板中使用當(dāng)前地區(qū)特定的格式,來展示日期、時間和數(shù)字。也可以處理表單中輸入的本地化。

當(dāng)它被開啟時,訪問相同內(nèi)容的兩個用戶可能會看到以不同方式格式化的日期、時間和數(shù)字,這取決于它們的當(dāng)前地區(qū)的格式。

格式化系統(tǒng)默認(rèn)是禁用的。需要在你的設(shè)置文件中設(shè)置USE_L10N = True來啟用它。

注意

為了方便起見,django-admin startproject創(chuàng)建的默認(rèn)的settings.py文件包含了&nbsp;[USE_L10N = True](../../ref/settings.html#std:setting-USE_L10N) 的設(shè)置。但是要注意,要開啟千位分隔符的數(shù)字格式化,你需要在你的設(shè)置文件中設(shè)置USE_THOUSAND_SEPARATOR = True?;蛘?,你也可以在你的模板中使用intcomma來格式化數(shù)字。

注意

USE_I18N 是另一個獨(dú)立的并且相關(guān)的設(shè)置,它控制著Django是否應(yīng)該開啟翻譯。詳見翻譯。

表單中的本地化識別輸入

格式化開啟之后,Django可以在表單中使用本地化格式來解析日期、時間和數(shù)字。也就是說,在表單上輸入時,它會嘗試不同的格式和地區(qū)來猜測用戶使用的格式。

注意

Django對于展示數(shù)據(jù),使用和解析數(shù)據(jù)不同的格式。尤其是,解析日期的格式不能使用%a(星期名稱的縮寫),%A (星期名稱的全稱),%b (月份名稱的縮寫), %B(月份名稱的全稱),或者%p(上午/下午)。

只是使用localize參數(shù),就能開啟表單字段的本地化輸入和輸出:

class CashRegisterForm(forms.Form):
   product = forms.CharField()
   revenue = forms.DecimalField(max_digits=4, decimal_places=2, localize=True)

在模板中控制本地化

當(dāng)你使用USE_L10N來開啟格式化的時候,Django會嘗試使用地區(qū)特定的格式,無論值在模板的什么位置輸出。

然而,這對于本地化的值不可能總是十分合適,如果你在輸出JavaScript或者機(jī)器閱讀的XML,你會想要使用去本地化的值。你也可能想只在特定的模板中使用本地化,而不是任何位置都使用。

DJango提供了l10n模板庫,包含以下標(biāo)簽和過濾器,來實現(xiàn)對本地化的精細(xì)控制。

模板標(biāo)簽

localize

在包含的代碼塊內(nèi)開啟或關(guān)閉模板變量的本地化。

這個標(biāo)簽可以對本地化進(jìn)行比USE_L10N更加精細(xì)的操作。

這樣做來為一個模板激活或禁用本地化:

{% load l10n %}

{% localize on %}
    {{ value }}
{% endlocalize %}

{% localize off %}
    {{ value }}
{% endlocalize %}

注意

在 {% localize %}代碼塊內(nèi)并不遵循f USE_L10N的值。

對于在每個變量基礎(chǔ)上執(zhí)行相同工作的模板過濾器,參見localizeunlocalize

模板過濾器

localize

強(qiáng)制單一值的本地化。

例如:

{% load l10n %}

{{ value|localize }}

使用unlocalize來在單一值上禁用本地化。使用localize 模板標(biāo)簽來在大塊的模板區(qū)域內(nèi)控制本地化。

unlocalize

強(qiáng)制單一值不帶本地化輸出。

例如:

{% load l10n %}

{{ value|unlocalize }}

使用localize來強(qiáng)制單一值的本地化。使用localize模板標(biāo)簽來在大塊的模板區(qū)域內(nèi)控制本地化。

創(chuàng)建自定義的格式文件

Django為許多地區(qū)提供了格式定義,但是有時你可能想要創(chuàng)建你自己的格式,因為你的的確并沒有現(xiàn)成的格式文件,或者你想要覆寫其中的一些值。

Changed in Django 1.8:

添加了指定FORMAT_MODULE_PATH為列表的功能。之前只支持單一的字符串值。

指定你首先放置格式文件的位置來使用自定義格式。把你的FORMAT_MODULE_PATH設(shè)置設(shè)置為格式文件存在的包名來使用它,例如:

FORMAT_MODULE_PATH = [
    'mysite.formats',
    'some_app.formats',
]

文件并不直接放在這個目錄中,而是放在和地區(qū)名稱相同的目錄中,文件也必須名為formats.py。

需要這樣一個結(jié)構(gòu)來自定義英文格式:

mysite/
    formats/
        __init__.py
        en/
            __init__.py
            formats.py

其中formats.py包含自定義的格式定義。例如:

from __future__ import unicode_literals

THOUSAND_SEPARATOR = '\xa0'

使用非間斷空格(Unicode 00A0)作為千位分隔符,來代替英語中默認(rèn)的逗號。

提供本地化格式的限制

一些地區(qū)對數(shù)字使用上下文敏感的格式,Django的本地化系統(tǒng)不能自動處理它。

瑞士(德語)

瑞士的數(shù)字格式化取決于被格式化的數(shù)字類型。對于貨幣值,使用逗號作為千位分隔符,以及使用小數(shù)點(diǎn)作為十進(jìn)制分隔符。對于其它數(shù)字,逗號用于十進(jìn)制分隔符,空格用于千位分隔符。Django提供的本地格式使用通用的分隔符,即逗號用于十進(jìn)制分隔符,空格用于千位分隔符。

譯者:Django 文檔協(xié)作翻譯小組,原文:ocalized Web UI formatting and form input

本文以 CC BY-NC-SA 3.0 協(xié)議發(fā)布,轉(zhuǎn)載請保留作者署名和文章出處。

Django 文檔協(xié)作翻譯小組人手緊缺,有興趣的朋友可以加入我們,完全公益性質(zhì)。交流群:467338606。

上一篇:Django 的設(shè)置下一篇:信號