{"title":"shell 명령을 사용자 정의하는 방법","version":"6.0","locale":"ko","docname":"howto/custom-shell","url":"/ko/6.0/howto/custom-shell/","canonical":"https://djangodocs.dev/ko/6.0/howto/custom-shell/","summary":"Django :djadmin: ` shell`은 대화형 Python 환경으로, 모델과 설정에 접근할 수 있어 코드 테스트, 쿼리 실험, 애플리케이션 데이터와 상호작용하는 데 유용합니다. shell 명령을 사용자 정의하면 추가 기능을 넣거나 특정 모듈을 미리 로드할 수 있습니다. 이를 위해…","html":"<h1><code class=\"docutils literal notranslate\"><span class=\"pre\">shell</span></code> 명령을 사용자 정의하는 방법<a class=\"heading-anchor\" href=\"#how-to-customize-the-shell-command\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Django :djadmin:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>shell`은 대화형 Python 환경으로, 모델과 설정에 접근할 수 있어 코드 테스트, 쿼리 실험, 애플리케이션 데이터와 상호작용하는 데 유용합니다.</p>\n<p><a class=\"reference internal\" href=\"/ko/6.0/ref/django-admin/#django-admin-shell\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">shell</span></code></a> 명령을 사용자 정의하면 추가 기능을 넣거나 특정 모듈을 미리 로드할 수 있습니다. 이를 위해 <code class=\"docutils literal notranslate\"><span class=\"pre\">django.core.management.commands.shell.Command``를</span> <span class=\"pre\">상속하고</span> <span class=\"pre\">기존</span> <span class=\"pre\">``shell</span></code> 관리 명령을 오버라이드하는 새로운 관리 명령을 생성해야 합니다. 자세한 내용은 <a class=\"reference internal\" href=\"/ko/6.0/howto/custom-management-commands/#overriding-commands\"><span class=\"std std-ref\">overriding commands</span></a> 가이드를 참고하세요.</p>\n<section id=\"customize-automatic-imports\">\n<span id=\"customizing-shell-auto-imports\"></span><h2>자동 불러오기 사용자 정의<a class=\"heading-anchor\" href=\"#customize-automatic-imports\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<aside class=\"version-note version-added\" data-version=\"5.2\">\n<p class=\"version-note-title\">New in Django 5.2</p></aside>\n<p><a class=\"reference internal\" href=\"/ko/6.0/ref/django-admin/#django-admin-shell\"><code class=\"xref std std-djadmin docutils literal notranslate\"><span class=\"pre\">shell</span></code></a> 관리 명령의 자동 불러오기 동작을 사용자 정의하려면 <code class=\"docutils literal notranslate\"><span class=\"pre\">get_auto_imports()</span></code> 메서드를 오버라이드하세요. 이 메서드는 애플리케이션에서 사용할 수 있는 객체나 모듈의 불러오기 경로 목록을 반환해야 합니다. 예를 들면 다음과 같습니다.</p>\n<figure class=\"code-block code-block-captioned\" data-language=\"python\"><figcaption class=\"code-block-caption\"><code class=\"docutils literal notranslate\"><span class=\"pre\">polls/management/commands/shell.py</span></code></figcaption>\n<div class=\"code-block-toolbar\"><span class=\"code-block-language\">Python</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Python code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.core.management.commands</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">shell</span>\n\n\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Command</span><span class=\"p\">(</span><span class=\"n\">shell</span><span class=\"o\">.</span><span class=\"n\">Command</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_auto_imports</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"nb\">super</span><span class=\"p\">()</span><span class=\"o\">.</span><span class=\"n\">get_auto_imports</span><span class=\"p\">()</span> <span class=\"o\">+</span> <span class=\"p\">[</span>\n            <span class=\"s2\">&quot;django.urls.reverse&quot;</span><span class=\"p\">,</span>\n            <span class=\"s2\">&quot;django.urls.resolve&quot;</span><span class=\"p\">,</span>\n        <span class=\"p\">]</span>\n</code></pre></figure>\n<p>위 사용자 정의는 :func:<a href=\"#id1\"><span class=\"problematic\" id=\"id2\">`</span></a>~django.urls.resolve`와 :func:<a href=\"#id3\"><span class=\"problematic\" id=\"id4\">`</span></a>~django.urls.reverse`를 기본 네임스페이스에 추가합니다. 기본 네임스페이스에는 :setting:<a href=\"#id5\"><span class=\"problematic\" id=\"id6\">`</span></a>INSTALLED_APPS`에 나열된 앱의 모든 모델과 기본적으로 불러오는 항목이 포함되어 있습니다. 이러한 객체는 수동으로 불러오지 않아도 <a href=\"#id7\"><span class=\"problematic\" id=\"id8\">``</span></a>shell``에서 사용할 수 있습니다.</p>\n<p>이렇게 사용자 정의된 <code class=\"docutils literal notranslate\"><span class=\"pre\">shell</span></code> 명령을 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>verbosity=2``로 실행하면 다음과 같이 표시됩니다.</p>\n<div class=\"code-block\" data-language=\"console\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Shell</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Shell code\"><code><span class=\"go\">13 objects imported automatically:</span>\n\n<span class=\"go\">  from django.db import connection, reset_queries, models</span>\n<span class=\"go\">  from django.conf import settings</span>\n<span class=\"go\">  from django.contrib.admin.models import LogEntry</span>\n<span class=\"go\">  from django.contrib.auth.models import Group, Permission, User</span>\n<span class=\"go\">  from django.contrib.contenttypes.models import ContentType</span>\n<span class=\"go\">  from django.contrib.sessions.models import Session</span>\n<span class=\"go\">  from django.urls import resolve, reverse</span>\n<span class=\"go\">  from django.utils import timezone</span>\n</code></pre></div>\n<aside class=\"version-note version-changed\" data-version=\"6.0\">\n<p class=\"version-note-title\">Changed in Django 6.0</p><p><a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>django.conf.settings``과 같은 공통 유틸리티의 자동 불러오기가 추가되었습니다.</p>\n</aside>\n<p>오버라이드된 <code class=\"docutils literal notranslate\"><span class=\"pre\">shell</span></code> 명령에 불러올 수 없는 경로가 포함된 경우 <code class=\"docutils literal notranslate\"><span class=\"pre\">verbosity``가</span> <span class=\"pre\">``1</span></code> 이상으로 설정되어 있으면 이러한 오류가 표시됩니다. 중복 불러오기는 자동으로 처리됩니다.</p>\n<p>자동 불러오기는 <a class=\"reference internal\" href=\"/ko/6.0/ref/django-admin/#cmdoption-shell-no-imports\"><code class=\"xref std std-option docutils literal notranslate\"><span class=\"pre\">--no-imports</span></code></a> 플래그를 사용해 특정 <code class=\"docutils literal notranslate\"><span class=\"pre\">shell</span></code> 세션에서 비활성화할 수 있습니다. 자동 불러오기를 영구적으로 비활성화하려면 <a href=\"#id1\"><span class=\"problematic\" id=\"id2\">``</span></a>get_auto_imports()``가 <a href=\"#id3\"><span class=\"problematic\" id=\"id4\">``</span></a>None``을 반환하도록 오버라이드하세요:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">Command</span><span class=\"p\">(</span><span class=\"n\">shell</span><span class=\"o\">.</span><span class=\"n\">Command</span><span class=\"p\">):</span>\n    <span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">get_auto_imports</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n        <span class=\"k\">return</span> <span class=\"kc\">None</span>\n</code></pre></div>\n</section>","rootId":"how-to-customize-the-shell-command","toc":[{"title":"자동 불러오기 사용자 정의","anchor":"customize-automatic-imports","children":[]}],"breadcrumbs":[{"docname":"howto/index","title":"How-to 가이드","url":"/ko/6.0/howto/"}],"prev":{"docname":"howto/custom-management-commands","title":"커스텀 “django-admin” 명령을 만드는 방법","url":"/ko/6.0/howto/custom-management-commands/"},"next":{"docname":"faq/index","title":"장고 자주묻는 질문","url":"/ko/6.0/faq/"},"formats":{"html":"/ko/6.0/howto/custom-shell/","markdown":"/ko/6.0/howto/custom-shell.md","json":"/ko/6.0/howto/custom-shell.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/howto/custom-shell.txt","official":"https://docs.djangoproject.com/ko/6.0/howto/custom-shell/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}