创建django模型时有关一些语法的快速问题。如果您查看下面的示例models.py文件,您将看到四个字段中的每个字段都包含字段名的重复,在我的下划线前面的括号中有一个字符串。我假设这是某种形式的可视化表示,但在admin中,这似乎是自动发生的,其中包含了_(‘字段名’)。
class User(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(_('email address'), unique=True)
first_name = models.CharField(_('first name'), max_length=30, blank=True)
last_name = models.CharField(_('last name'), max_length=30, blank=True)
date_joined = models.DateTimeField(_('date joined'), auto_now_add=True)发布于 2018-11-25 01:32:38
所有内置字段类型都继承自字段类。如果查看该类的__init__()调用,您将看到函数中的第一个参数是verbose_name参数。这就告诉我们这些字符串映射到什么。
_('some text')构造是一种相当流行的国际化语法(也称为i18n)。我在PHP等其他语言中见过这种语法。这允许在翻译代码时以各种语言呈现详细的名称。正如您在上面的注释中所指出的,函数ugettext_lazy是作为别名_导入的。这允许程序员(所有的程序员都是懒惰的)在中键入ugettext_lazy('some text')而不是ugettext_lazy('some text')--每个需要翻译文本的位置。由于应用程序中可能存在数百(或数千)硬编码字符串,因此从长远来看,它可以节省程序员大量时间。
这是一次丑陋的黑客攻击,但它完成了任务。在Python中,我特别不喜欢它,因为它覆盖了有时有用的_名称,当您想丢弃一个值时,它常常被用作占位符变量名。
https://stackoverflow.com/questions/53463621
复制相似问题