如何从 Django shell 执行 Python 脚本?

新手上路,请多包涵

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

 ./manage.py shell << my_script.py

但它没有用。它只是在等我写点什么。

原文由 user2429940 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 385
2 个回答

<< 部分是错误的,使用 < 代替:

 $ ./manage.py shell < myscript.py

你也可以这样做:

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

对于 python3 你需要使用

>>> exec(open('myscript.py').read())

原文由 codeape 发布,翻译遵循 CC BY-SA 3.0 许可协议

不建议您从 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

原文由 danodonovan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题