首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我要获得NameError:在为djangocms-_设置自定义模板时没有定义名称'_‘?

为什么我要获得NameError:在为djangocms-_设置自定义模板时没有定义名称'_‘?
EN

Stack Overflow用户
提问于 2022-01-04 20:59:40
回答 1查看 552关注 0票数 1

我试图让自定义模板工作的djangocms-视频。

到目前为止,有一个新的djangocms项目,用一些引导和运行良好。

根据自述文件,我们需要在settings.py中指定这一点,以使自定义模板可用(在本例中,是一个名为“feature”的模板):

代码语言:javascript
复制
DJANGOCMS_VIDEO_TEMPLATES = [
    ('feature', _('Featured Version')),
]

在设置它并运行manage.py之后,将出现以下错误:

代码语言:javascript
复制
    ('feature', _('Featured Version')),
NameError: name '_' is not defined

根据其他线程,我们需要在modely.py:from django.utils.translation import gettext as _中导入这样的gettext,或者像这样:django.utils.translation import ugettext_lazy as _

到目前为止还没有运气。我在这里错过了什么?

以下是一些有关环境的信息:

代码语言:javascript
复制
python --version
Python 3.9.2
代码语言:javascript
复制
pip list
Package                    Version
-------------------------- -----------
asgiref                    3.4.1
cssselect2                 0.4.1
dj-database-url            0.5.0
Django                     3.1.14
django-classy-tags         2.0.0
django-cms                 3.8.0
django-filer               2.1.2
django-formtools           2.3
django-js-asset            1.2.2
django-mptt                0.13.4
django-polymorphic         3.0.0
django-sekizai             2.0.0
django-treebeard           4.5.1
djangocms-admin-style      2.0.2
djangocms-attributes-field 2.0.0
djangocms-bootstrap4       2.0.0
djangocms-file             3.0.0
djangocms-googlemap        2.0.0
djangocms-icon             2.0.0
djangocms-installer        2.0.0
djangocms-link             3.0.0
djangocms-picture          3.0.0
djangocms-style            3.0.0
djangocms-text-ckeditor    4.0.0
djangocms-video            3.0.0
easy-thumbnails            2.8
html5lib                   1.1
lxml                       4.7.1
Pillow                     9.0.0
pip                        21.3.1
pkg_resources              0.0.0
pytz                       2021.3
pytz-deprecation-shim      0.1.0.post0
reportlab                  3.6.5
setuptools                 44.1.1
six                        1.16.0
sqlparse                   0.4.2
svglib                     1.1.0
tinycss2                   1.1.1
tzdata                     2021.5
tzlocal                    4.1
Unidecode                  1.1.2
webencodings               0.5.1
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-04 21:05:34

在Django中,函数[Django-doc]通常作为_导入以管理翻译。这在https://docs.djangoproject.com/en/dev/topics/i18n/translation/#standard-translation中得到了解释。

Python的标准库gettext模块将_()安装到全局命名空间中,作为gettext()的别名。在Django,出于几个原因,我们选择不遵循这种做法。 (…) 由于xgettext (由makemessages使用)的工作方式,只有使用单个字符串参数的函数才可以导入为_

因此,你应该加上:

代码语言:javascript
复制
from django.utils.translation import gettext_lazy as _

在文件的顶部。

如果因此定义了类似于_('Featured Version')的内容,则可以运行制造来生成翻译文件并填写每种语言的翻译。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70584999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档