'verbose_name': _('Маленькие экраны') NameError: имя '_' не определено

После установки 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' и получил эту ошибку:

enter image description here

MIDDLEWARE это:

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(…) [Django-doc]. Вам нужно импортировать это (в верхней части вашего файла):

from django.utils.translation import gettext_lazy as _

Вы также можете импортировать это просто как gettext_lazy и затем использовать это позже в программе:

from django.utils.translation import gettext_lazy

# …

'verbose_name': gettext_lazy('Small screens')

Или если вы не планируете делать ваше приложение доступным на других языках, вы просто используете литерал строки, удалив часть _(…):

'verbose_name': 'Small screens'
Вернуться на верх