'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'
и получил эту ошибку:
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'