繁体   English   中英

Django 模型字段包含奇怪的属性 _("private")

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM