Django 쉘에서 Python 스크립트를 실행해야합니다. 나는 시도했다 :
./manage.py shell << my_script.py
그러나 작동하지 않았습니다. 내가 무언가를 쓰려고 기다리고있었습니다.
답변
<<
부분이 잘못 사용 <
하는 대신 :
$ ./manage.py shell < myscript.py
당신은 또한 할 수 있습니다 :
$ ./manage.py shell
...
>>> execfile('myscript.py')
python3의 경우 사용해야합니다
>>> exec(open('myscript.py').read())
답변
당신은에서 그렇게하지 않는 것이 좋습니다있어 shell
– 당신은 정말 장고 환경에서 임의의 스크립트를 실행해야합니다으로이 것입니다 (하지만 거기에 있다 , 다른 답변을 볼이 주위 방법).
이것은 당신이 여러 번 실행됩니다 스크립트가 있다면, 그것은 좋은 생각은로 설정의 사용자 지정 명령 , 즉
$ ./manage.py my_command
이 작업을 수행하는 것은의 하위 디렉터리에있는 파일 생성 management
및 commands
사용자의 app
, 즉
my_app/
__init__.py
models.py
management/
__init__.py
commands/
__init__.py
my_command.py
tests.py
views.py
이 파일에서 사용자 정의 명령을 정의하십시오 (파일 이름이에서 실행하려는 명령의 이름인지 확인하십시오 ./manage.py
)
from django.core.management.base import BaseCommand
class Command(BaseCommand):
def handle(self, **options):
# now do the things that you want with your models here
답변
Django 1.7 이상을 사용하는 사람이라면 단순히 설정 모듈을 가져 오는 것만으로는 충분하지 않은 것 같습니다.
약간의 파기 후이 스택 오버플로 답변을 발견했습니다. https://stackoverflow.com/a/23241093
이제 다음을 수행해야합니다.
import os, django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings")
django.setup()
# now your code can go here...
위의 작업을 수행하지 않으면 django.core.exceptions.AppRegistryNoReady
오류가 발생했습니다.
내 스크립트 파일은 django 프로젝트와 같은 디렉토리에 있습니다 (즉, manage.py와 같은 폴더에 있습니다)
답변
나는 파티에 늦었지만 내 응답이 누군가를 도울 수 있기를 바랍니다. Python 스크립트 에서이 작업을 수행 할 수 있습니다.
import sys, os
sys.path.append('/path/to/your/django/app')
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
from django.conf import settings
당신의 물건의 나머지는 여기에 간다 ….
답변
runscript
에서 장고 – 확장
python manage.py runscript scripty.py
script.py
테스트 할 샘플 :
from django.contrib.auth.models import User
print(User.objects.values())
http://django-extensions.readthedocs.io/en/latest/command_extensions.html에 언급되어 있으며 다음에 문서화되어 있습니다.
python manage.py runscript --help
장고 1.9.6, 장고 확장 1.6.7에서 테스트되었습니다.