一尘不染

如何从Django Shell执行Python脚本?

django

我需要从Django Shell执行Python脚本。我试过了:

./manage.py shell << my_script.py

但这没有用。只是在等我写东西。


阅读 794

收藏
2020-03-26

共2个答案

一尘不染

该<<部分有误,请<改用:

$ ./manage.py shell < myscript.py

你也可以这样做:

$ ./manage.py shell
...
>>> execfile('myscript.py')

对于python3,你需要使用

>>> exec(open('myscript.py').read())
2020-03-26
一尘不染

不建议这样做,从shell-这是为了你真不该从Django的环境中执行随机脚本(但也有是解决这个办法,看到其他的答案)。

如果你要多次运行该脚本,则最好将其设置为自定义命令,即

 $ ./manage.py my_command

要做到这一点创建一个子目录文件managementcommands你的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
2020-03-26