我需要从Django Shell执行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-这是为了你真不该从Django的环境中执行随机脚本(但也有是解决这个办法,看到其他的答案)。
shell
如果你要多次运行该脚本,则最好将其设置为自定义命令,即
$ ./manage.py my_command
要做到这一点创建一个子目录文件management和commands你的app,即
management
commands
app
my_app/ __init__.py models.py management/ __init__.py commands/ __init__.py my_command.py tests.py views.py
并在此文件中定义你的自定义命令(确保文件名是你要从执行的命令的名称./manage.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