Разве вызов django_stubs_ext.monkeypatch не должен быть внутри проверки TYPE_CHECKING?
Простой вопрос по поводу django_stubs_ext. Разве исправление ошибок не должно выполняться только во время проверки типов?
Что-то вроде этого:
# settings.py
if TYPE_CHECKING:
import django_stubs_ext
django_stubs_ext.monkeypatch()
django_stubs_ext.monkeypatch() не следует помещать внутри блока if TYPE_CHECKING:, поскольку он должен выполняться во время выполнения, а не только во время проверки типа.
Цель этой функции - исправить некоторые внутренние компоненты Django, чтобы mypy и подсказки по вводу текста работали корректно. Если вы обернете его в TYPE_CHECKING, он никогда не будет запущен во время выполнения программы, что противоречит его назначению.
Как указано в официальной документации:
“Это нужно вызвать только один раз, поэтому вызов
monkeypatchследует поместить в настройки верхнего уровня”.
Поэтому убедитесь, что вы вызываете его в самом верху вашего файла настроек (или в другой центральной точке входа) перед любым импортом django.
Вот ссылка на справочник, который я использовал, чтобы ответить на ваш вопрос:
https://pypi.org/project/django-stubs-ext/
Пример кода, который приведен в документации:
from os import environ
import django_stubs_ext
from split_settings.tools import include, optional
# Monkeypatching Django, so stubs will work for all generics,
# see: https://github.com/typeddjango/django-stubs
django_stubs_ext.monkeypatch()
# Managing environment via `DJANGO_ENV` variable:
environ.setdefault('DJANGO_ENV', 'development')
_ENV = environ['DJANGO_ENV']
_base_settings = (
'components/common.py',
'components/logging.py',
'components/csp.py',
'components/caches.py',
# Select the right env:
'environments/{0}.py'.format(_ENV),
# Optionally override some settings:
optional('environments/local.py'),
)
# Include settings:
include(*_base_settings)
<время работы/>