Spec-Zone.ru › Django 6.0

Как настроить команду оболочки

shell Django — это интерактивная среда Python, предоставляющая доступ к моделям и настройкам. Она полезна для тестирования кода, экспериментов с запросами и взаимодействия с данными приложения.

Настройка команды shell позволяет добавлять дополнительные возможности или предварительно загружать определённые модули. Для этого создайте новую команду управления, унаследованную от django.core.management.commands.shell.Command, и переопределите существующую команду управления shell. Подробнее см. руководство по переопределению команд.

Настройка автоматического импорта

Новое в Django 5.2.

Чтобы настроить автоматический импорт в команде управления shell, переопределите метод get_auto_imports(). Этот метод должен возвращать последовательность путей импорта объектов или модулей, доступных в приложении. Например:

polls/management/commands/shell.py
from 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 6.0:

Добавлен автоматический импорт часто используемых утилит, таких как 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API