django의 manage.py shell 명령으로 가져 오는 방법은 어떻게 되나요?
-
11-09-2019 - |
문제
Django 프로젝트에서 Manage.py Shell을 실행할 때 쉘의 시작 부분에서 항상 실행하고 싶은 일반적인 가져 오기가 있습니다 (예 : 항상 모델 파일을 가져오고 싶습니다) 쉘 명령을 실행할 때마다 자동으로 실행합니까?
두 번째 관련 질문, UP 화살표를 쳤을 때 Manage.py Shell (및 일반 Python Shell)에서 이전에 실행되는 명령 대신 "^a"문자를 얻습니다. 이전 명령을로드하여 어떻게 수정 할 수 있습니까? Linux/Unix 명령 줄에서처럼?
해결책
첫 번째 질문은 manage.py shell_plus
command provided by the Django-Extensions 프로젝트. 쉘 시작에 모든 모델 파일을로드합니다. 이 프로젝트는 다른 유용한 트릭도 많이 가지고 있으므로 확인할 가치가 있습니다.
두 번째 질문은 설치하면됩니다. readline
.
다른 팁
당신은 무엇을 복제 할 수 있습니다
python manage.py shell
그냥 할 때 :
from django.core.management import setup_environ
from mysite import settings
setup_environ(settings)
그리고 당신은 그 대본의 나머지 부분에 대해 환경을 모두 설정하게 할 것입니다. 여기서도 이것을하는 다른 방법이 있습니다. http://www.b-list.org/weblog/2007/sep/22/standalone-django-scripts/
두 가지 문제를 모두 해결할 수있는 한 가지는 IPYTHON. Ipython은 이전 처형을 저장하며 완료를 제공 할 수 있습니다.
자주 사용되는 패키지를 자동으로 가져옵니다 python manage.py shell_plus
예시:
# local_settings
SHELL_PLUS_PRE_IMPORTS = (
('<app_name>.models', '*'),
('<app_name>.forms', '*'),
('<app_name>.views', '*'),
('django.core.urlresolvers', '*'),
('django.db', 'connection'),
('django.db', 'reset_queries'),
)
SHELL_PLUS_DONT_LOAD = ['<app_name>', '<app_name>']
참조:
https://github.com/django-extensions/django-extensions/blob/master/docs/shell_plus.rst
Django 쉘에 추가 물건을 추가하는 것은 Shell_Plus 명령이 django-extesions 앱 및 'imported_objects'사전에 사용할 수 있도록 원하는 것을 추가하여 수정하십시오.
예 : shell_plus.py 파일을 복제하고 끝에이 두 줄을 추가하면 :
# .......
alist = range(1000)
imported_objects['alist'] = alist
code.interact(local=imported_objects) # <-- this is the original final line
새 파일을 사용하여 쉘을 실행하면 'Alist'참조를 사용할 수 있습니다. 여기에 더 긴 예를 넣었습니다. http://www.michelepasin.org/techblog/?p=1012