2011-06-11 2 views
10

때로는 쉘을 사용하는 것처럼 마치 장고 프로젝트 컨텍스트에서 파일을 실행하고 싶지만 텍스트 편집기를 사용할 때 편리합니다. 이것은 주로 무언가를 시도하거나보기, 테스트, 되풀이 작업 또는 관리 명령에 넣기 전에 일부 기능을 신속하게 프로토 타입하는 것입니다.Django 프로젝트 컨텍스트에서 임의의 스크립트를 어떻게 실행합니까?

나는 내 평 파일의 상단에이 줄을 부착 할 수 있습니다 알고는 장고의 컨텍스트에서 실행됩니다 : 나는 걸리는 관리 명령을 만들기 위해 쉬울 거라고 생각

import sys 
sys.path.append('/location/of/projet') 
from django.core.management import setup_environ 
import settings 
setup_environ(settings) 

on 인자, 실행할 파이썬 모듈, Django 환경에서 실행합니다. 여기에 내가 쓴 'runmodule'명령입니다 :

from django.core.management.base import BaseCommand, CommandError 

class Command(BaseCommand): 
    help = "Runs an arbitrary module, in the Django environment, for quick prototyping of code that's too big for the shell." 

    def handle(self, *args, **options): 
     if not args: 
      return 
     module_name = args[0] 

     try: 
      __import__(module_name) 
     except ImportError: 
      print("Unable to import module %s. Check that is within Django's PYTHONPATH" % (module_name)) 

은 작동처럼이 보인다 - 나는 모듈에 몇 가지 코드를 부착하고,이 명령의 인수로 전달하고, 실행거야 수 있습니다, 예를 들어,

python manage.py runmodule myapp.trysomethingout 

myapp/trysomethingout.py를 실행합니다. 이 작업을 수행하는 가장 좋은 방법입니까?

답변

9

올바른 장고 컨텍스트로 스크립트를 실행하는 가장 좋은 방법은 DJANGO_SETTINGS_MODULE 환경 변수를 설정 모듈 (적절할 경우 PYTHONPATH)으로 설정하는 것입니다. 창에서이 보통 실행 의미

set DJANGO_SETTINGS_MODULE=setting 

및 bash는 : https://docs.djangoproject.com/en/dev/topics/settings/#designating-the-settings :

export DJANGO_SETTINGS_MODULE=setting 

을 이제 등

참조 모델을 가져올 수 있습니다.

settings 모듈을 가져 오려면 from django.conf import settings을 사용해야합니다. 이것은 settings.py를 자동으로 사용하는 대신 DJANGO_SETTINGS_MODULE을 고려합니다.

+1

파이썬 스크립트에 if __name__ == "__main__"을 직접 넣을 수 있습니다 : os.environ.setdefault ("DJANGO_SETTINGS_MODULE", "settings") – OriolJ