[英]Django model field contain strange attribute _("private")
目前我一直在学习 Django,在阅读时,我遇到了下面我不明白的代码块。
private = models.BooleanField(
_('private'),
default=False,
help_text=_('theme is available ONLY for the site.'),
)
上面的代码行包含_('private')
,我无法理解它的作用。 我知道将_
用于翻译相关的东西。 为什么没有为_("private")
声明属性名称?
我试图在网上找到答案,但一直无法找到。
谢谢。
_('private')
设置属性verbose_name
。
前导下划线是国际化 (i18n) 机制使用的 ugettext 函数之一的常用函数别名。
这意味着当您运行 i18n 时,如果有可用的翻译,标签将被翻译成适当的最终用户语言。
检查这个答案: https : //stackoverflow.com/a/2964256/9361129
正如你在Django的源代码中看到的那样, Field
的构造函数(由BooleanField
继承)将verbose_name
作为第一个位置参数。 因此,您的第一个参数( _('private')
)将影响到verbose_name
。
但是,为了使您的代码更清晰,我建议将其作为关键字参数传递:
private = models.BooleanField(
verbose_name=_('private'),
default=False,
help_text=_('theme is available ONLY for the site.'),
)
对verbose_name
使用关键字参数将使您和阅读您的代码的人更清楚,特别是因为Django 文档没有给出位置参数的顺序。 使用位置参数迫使读者阅读 Django 源代码以了解它是什么。
当您使用关键字参数时,您可以随意放置参数,因此此代码的工作方式相同:
private = models.BooleanField(
help_text=_('theme is available ONLY for the site.'),
verbose_name=_('private'),
default=False,
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.