# Django 6.0.7 문서

# `shell` 명령을 사용자 정의하는 방법

Django :djadmin:`shell`은 대화형 Python 환경으로, 모델과 설정에 접근할 수 있어 코드 테스트, 쿼리 실험, 애플리케이션 데이터와 상호작용하는 데 유용합니다.

`shell` 명령을 사용자 정의하면 추가 기능을 넣거나 특정 모듈을 미리 로드할 수 있습니다. 이를 위해 `django.core.management.commands.shell.Command``를 상속하고 기존 ``shell` 관리 명령을 오버라이드하는 새로운 관리 명령을 생성해야 합니다. 자세한 내용은 overriding commands 가이드를 참고하세요.

## 자동 불러오기 사용자 정의

`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",
            ]

위 사용자 정의는 :func:`~django.urls.resolve`와 :func:`~django.urls.reverse`를 기본 네임스페이스에 추가합니다. 기본 네임스페이스에는 :setting:`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

Changed in Django 6.0:

``django.conf.settings``과 같은 공통 유틸리티의 자동 불러오기가 추가되었습니다.

오버라이드된 `shell` 명령에 불러올 수 없는 경로가 포함된 경우 `verbosity``가 ``1` 이상으로 설정되어 있으면 이러한 오류가 표시됩니다. 중복 불러오기는 자동으로 처리됩니다.

자동 불러오기는 `--no-imports` 플래그를 사용해 특정 `shell` 세션에서 비활성화할 수 있습니다. 자동 불러오기를 영구적으로 비활성화하려면 ``get_auto_imports()``가 ``None``을 반환하도록 오버라이드하세요:

    class Command(shell.Command):
        def get_auto_imports(self):
            return None