Как настроить команду оболочки
shell Django — это интерактивная среда 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 будет выведено:
13 objects imported automatically: from django.db import connection, reset_queries, models from django.conf import settings 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 from django.utils import timezone
Добавлен автоматический импорт часто используемых утилит, таких как django.conf.settings.
Если переопределённая команда 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/6.0/howto/custom-shell/