我需要从Django shell中执行一个Python脚本。我试着:

./manage.py shell << my_script.py

但这并没有起作用。它只是在等我写点什么。


当前回答

将globals().update(locals())放在import语句之后

其他回答

你可以使用DJANGO_SETTINGS_MODULE环境变量来运行脚本。这就是设置Django-shell环境所需的全部内容。

这在Django >= 1.4中是有效的

注意,这个方法在django的最新版本中已经被弃用了!(> 1.3)

另一个答案是,您可以将它添加到my_script.py的顶部

from django.core.management import setup_environ
import settings
setup_environ(settings)

然后用python在settings。py目录下执行my_script.py,但这有点棘手。

$ python my_script.py

我刚刚发现一个有趣的东西是Django Scripts,它允许你用python manage.py runscript foobar来编写脚本。关于实现和结构的更多详细信息可以在这里找到,http://django-extensions.readthedocs.org/en/latest/index.html

Django.setup()似乎不能正常工作。

似乎也不是必须的。

仅这一点就奏效了。

import os, django, glob, sys, shelve
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myProject.settings")

其实很简单,只要你打开django shell Python manage.py shell然后简单的写import test来导入test.py

# test.py
def x():
  print('hello');

现在您可以执行该文件中的命令

test.x() //  will print hello