Как настроить командную строку shell
Django shell представляет собой интерактивную среду Python, которая обеспечивает доступ к моделям и настройкам, что делает её полезной для тестирования кода, экспериментирования с запросами и взаимодействия с данными приложения.
Настройка команды shell позволяет добавлять дополнительные функции или предварительно загружать определённые модули. Для этого создайте новую команду управления, которая является подклассом django.core.management.commands.shell.Command и переопределяет существующую команду управления shell. Для получения более подробной информации обратитесь к руководству по переопределению команд.
Настройка автоматического импорта
Чтобы настроить поведение автоматического импорта команды управления shell, переопределите метод get_auto_imports(). Этот метод должен возвращать последовательность путей импорта для объектов или модулей, доступных в приложении. Например:
polls/management/commands/shell.pyfrom django.core.management.commands import shell
class Command(shell.Command):
def get_auto_imports(self):
return super().get_auto_imports() + [
"django.urls.reverse",
"django.urls.resolve",
]
Указанная выше настройка добавляет resolve() и reverse() в пространство имён по умолчанию, которое уже включает все модели из приложений, перечисленных в INSTALLED_APPS. Эти объекты будут доступны в shell без необходимости ручного импорта.
Выполнение этой настроенной команды shell с verbosity=2 покажет:
8 objects imported automatically: from django.contrib.admin.models import LogEntry from django.contrib.auth.models import Group, Permission, User from django.contrib.contenttypes.models import ContentType from django.contrib.sessions.models import Session from django.urls import resolve, reverse
Если переопределённая команда shell включает пути, которые невозможно импортировать, эти ошибки отображаются, когда verbosity установлено на 1 или выше.
Обратите внимание, что автоматический импорт можно отключить для определённого сеанса shell с помощью флага --no-imports. Чтобы навсегда отключить автоматический импорт, переопределите get_auto_imports(), чтобы возвращалось значение None:
class Command(shell.Command):
def get_auto_imports(self):
return None
© Django Software Foundation and individual contributors
Licensed under the BSD License.
https://docs.djangoproject.com/en/5.2/howto/custom-shell/