python 惰性_Django中的“惰性翻译”方法的相关使用
使用 django.utils.translation.gettext_lazy() 函数,使得其中的值只有在访问时才会被翻译,而不是在 gettext_lazy() 被调用时翻译。
例如:要翻译一个模型的 help_text,按以下进行:
from django.utils.translation import ugettext_lazy
class MyThing(models.Model):
name = models.CharField(help_text=ugettext_lazy('This is the help text'))
在这个例子中, ugettext_lazy() 将字符串作为惰性参照存储,而不是实际翻译。 翻译工作将在字符串在字符串上下文中被用到时进行,比如在Django管理页面提交模板时。
在Python中,无论何处你要使用一个unicode 字符串(一个unicode 类型的对象),您都可以使用一个 ugettext_lazy() 调用的结果。 一个ugettext_lazy()对象并不知道如何把它自己转换成一个字节串。如果你尝试在一个需要字节串的地方使用它,事情将不会如你期待的那样。 同样,你也不能在一个字节串中使用一个 unicode 字符串。所以,这同常规的Python行为是一致的。 例如:
# This is fine: putting a unicode proxy into a unicode string.
u"Hello %s" % ugettext_lazy("people")
# This will not work, since you cannot insert a unicode object
# into a bytestring (nor can you insert our unicode proxy there)
"Hello %s" % ugettext_lazy("people")
如果你曾经见到到像"hello"这样的输出,你就可能在一个字节串中插入了ugettext_lazy()的结果。 在您的代码中,那是一个漏洞。
如果觉得 gettext_lazy 太过冗长,可以用 _ (下划线)作为别名,就像这样:
from django.utils.translation import ugettext_lazy as _
class MyThing(models.Model):
name = models.CharField(help_text=_('This is the help text'))
在Django模型中总是无一例外的使用惰性翻译。 为了翻译,字段名和表名应该被标记。(否则的话,在管理界面中它们将不会被翻译) 这意味着在Meta类中显式地编写verbose_nane和verbose_name_plural选项,而不是依赖于Django默认的verbose_name和verbose_name_plural(通过检查model的类名得到)。
from django.utils.translation import ugettext_lazy as _
class MyThing(models.Model):
name = models.CharField(_('name'), help_text=_('This is the help text'))
class Meta:
verbose_name = _('my thing')
verbose_name_plural = _('mythings')
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
python 惰性_Django中的“惰性翻译”方法的相关使用相关推荐
- python excel绘图-利用python在excel中画图的实现方法
一.前言 以前大学时候,学EXCEL看到N多大神利用excel画图,觉得很不可思议.今个学了一个来月python,膨胀了就想用excel画图.当然,其实用画图这个词不甚严谨,实际上是利用opencv遍 ...
- python设置cookie_Python中cookie的设置方法
学习目标: 掌握 Cookie 的定义和使用 Cookie 定义 Cookie,有时也用其复数形式Cookies. 指的是由服务端生成, 保存在客户端的一种数据存储形式,内部以 key-value 键 ...
- python 遍历_Python中遍历列表的方法总结
Python中遍历列表有以下几种方法: 一.for循环遍历 lists = ["m1", 1900, "m2", 2000] for item in lists ...
- Python打印输出数组中全部元素的方法
学习Python的人都知道数组是最常用的的数据类型,为了保证程序的正确性,需要调试程序. 因此,需要在程序中控制台中打印数组的全部元素,如果数组的容量较小,例如 只含有10个元素,采用print命令或 ...
- python time strptime_Python中操作时间之strptime()方法的使用
strptime()方法分析表示根据格式的时间字符串.返回值是一个struct_time所返回gmtime()或localtime(). 格式参数使用相同的指令使用strftime();它默认为&qu ...
- 【python】sklearn中PCA的使用方法
from sklearn.decomposition import PCA PCA 主成分分析(Principal Components Analysis),简称PCA,是一种数据降维技术,用于数据预 ...
- python笔记—文件中的f.readline()方法解析
** 首先一般解读是 f.readline() :从文件中读取一整行字符串(包括末尾的换行'\n') 通过例子具体来看 1. 编写一个程序,当用户输入文件名和行数(N)后,将该文件的前N行内容打印到屏 ...
- Python:numpy中arange的使用方法
>>> np.arange(3) array([0, 1, 2]) >>> np.arange(1,3,0.3) array([ 1. , 1.3, 1.6, ...
- python把数据写入excel_Python向excel中写入数据的方法
Python向excel中写入数据的方法 最近做了一项工作需要把处理的数据写入到Excel表格中进行保存,所以在此就简单介绍使用Python如何把数据保存到excel表格中. 数据导入之前需要安装 x ...
最新文章
- C++ multimap 的插入,遍历,删除
- Python实现微信消息防撤回
- 【共振峰跟踪】通过平均不同分辨率的方法跟踪共振峰,基于时频lpc的频谱图的MATLAB仿真
- ASA基本配置实验报告
- Esay ui数据加载等待提示
- 初识面向对象(理论1)
- UVA 10054 the necklace 欧拉回路
- 前端学习(3019):vue+element今日头条管理--自定义格式化面板
- Android 为应用添加默认加载页
- Git使用手册--超级详细,自己都看哭了
- 百度地图jar包冲突,特别是定位包冲突com/baidu/location/Address/$a.class。
- 21. 栈的压入、弹出序列
- CentOS 6.5设置静态IP教程 并且可以ping通
- 计算机网络学习之物理层篇
- 2015~2020年中国房价走势
- 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(4)
- max pooling 和 average pooling
- 一个小蜜蜂游戏的源代码
- SPA项目开发之CRUD+表单验证
- java爬虫工具xpath提取_爬虫 xpath (数据提取)