Django 模型标题 = 模型。CharField(_('title'), max_length=100)


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

最新更新