class PersonType(models.Model):
"""Person type model."""
title = models.CharField(_('title'), max_length=100)
slug = models.SlugField(_('slug'), unique=True)
我想知道_(' title ')在这里为title做什么。还有_('slug')对slug有什么作用?
Field
子类的第一个位置参数是该字段的verbose_name
:参见Field
的__init__
构造函数:
class Field(RegisterLookupMixin):
...
def __init__(self, verbose_name=None, name=None, ...)
...
下划线_
是ugettext_lazy
的别名,您可能会看到以下代码行:
from django.utils.translation import ugettext_lazy as _
Django文档提供了一个功能相同的代码片段,它使用关键字参数而不是位置参数:
class MyThing(models.Model):
name = models.CharField(verbose_name=_('This is the help text'))
这是一个"惰性翻译":
这些函数存储对字符串的延迟引用,而不是实际的转换。当字符串在字符串上下文中使用时,例如在模板呈现中,翻译本身将完成。
_是可调用对象(函数,可调用对象)的名称。它通常用于gettext函数,例如在Django中:
Django Ducumentation可以这样使用:
from django.utils.translation import gettext
equal output = gettext("Welcome to my site.")
或者像这样
from django.utils.translation import gettext as _
output = _("Welcome to my site.")
它们都用于翻译,您可以在模板中这样使用这个值:
<title>{% trans "Welcome to my site." %}</title>
# Will print "Welcome to my site." if the current language is English
# "Bienvenue sur mon site." in French
# "به سایت من خوش آمدید." in Iran