Команда shell

Команда shell запускает интерактивную оболочку Python с уже настроенным окружением Django. Это позволяет разработчикам выполнять произвольный Python-код, взаимодействовать с моделями базы данных, тестировать запросы и отлаживать логику приложения в реальном времени. Оболочка автоматически загружает все установленные приложения и делает доступными настройки проекта.

Команда принимает необязательные аргументы для выбора конкретной оболочки (IPython, bpython или стандартная Python), а также позволяет выполнить код из указанного файла.

Синтаксис

pythonpython manage.py shell [options] [args]

Пример

Запустим стандартную оболочку Django и импортируем модель Article для выполнения запросов:

pythonpython manage.py shell

Внутри оболочки выполняем код:

python>>> from myapp.models import Article
>>> articles = Article.objects.all()
>>> for article in articles:
...   print(article.title)
...
"First article"
"Second article"
"Third article"

Пример

Используем опцию -i для выполнения кода из файла перед входом в интерактивный режим:

pythonpython manage.py shell -i test_script.py

Создадим файл test_script.py со следующим содержимым:

pythonfrom myapp.models import Article
from django.contrib.auth.models import User

# Create test user
user = User.objects.create_user(
  username='testuser',
  password='testpass123'
)

# Create test article
article = Article.objects.create(
  title='Test article',
  content='Test content',
  author=user
)
print("Test data created successfully")

После запуска оболочки мы сразу перейдём в интерактивный режим с выполненным скриптом:

python>>> article.title
"Test article"
>>> article.author.username
"testuser"

Пример

Запустим оболочку с использованием IPython для улучшенного интерфейса и автодополнения:

pythonpython manage.py shell -i ipython

В IPython доступны дополнительные возможности:

pythonIn [1]: from myapp.models import Article
In [2]: articles = Article.objects.filter(status='published')
In [3]: articles.count()
Out[3]: 5
In [4]: [a.title for a in articles]
Out[4]: ["First article", "Second article", "Third article", "Fourth article", "Fifth article"]

Смотрите также

  • команда migrate,
    применяет миграции к базе данных
  • команда makemigrations,
    создаёт новые файлы миграций
  • команда runserver,
    запускает локальный сервер разработки
  • команда createsuperuser,
    создаёт суперпользователя для админки