'verbose_name': _('Small screens') NameError: name '_' is not defined

'verbose_name': _('Small screens') NameError: name '_' is not defined

将 django-responsive2 安装为 django-responsive2 后,出现以下错误:

'verbose_name': _('Small screens')
NameError: name '_' is not defined

我用 from django.utils.translation import gettext_lazy as _。 我收到此错误:

mw_instance = middleware(adapted_handler)
TypeError: object() takes no parameters 

接下来我用了

from django.utils.translation import gettext_lazy
'verbose_name': gettext_lazy('Small screens')

但是我又遇到了之前的错误。 最后我使用了 'verbose_name': 'Small screens' 并得到了这个错误:

中间件是:

MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
        'responsive.middleware.ResponsiveMiddleware',
    ]

在 Django 中,_ 用作引用 gettext_lazy(…) function [Django-doc] 的短标识符。你需要导入这个(在你的文件的顶部):

from django.utils.translation <strong>import gettext_lazy as _</strong>

您也可以将其简单地导入为 gettext_lazy,然后稍后在程序中使用它:

from django.utils.translation import <strong>gettext_lazy</strong>

# …

'verbose_name': <strong>gettext_lazy(</strong>'Small screens'<strong>)</strong>

或者如果您不打算以其他语言提供您的应用程序,您只需使用字符串文字,因此删除 _(…) 部分:

'verbose_name': <strong>'Small screens'</strong>