我正在运行一些与django应用程序相关的python脚本。
所以我手动创建了一个包含一些python脚本的文件夹(名为scripts),但不使用./manage.py startapp scripts
。除此文件夹外,还有一个modelsapp
django应用(包含我的模型),然后是project
包含settings.py
和urls.py
的文件夹。
我运行./manage.py shell < scripts/script.py
来运行我的脚本。
现在这是我的scripts.py
的示例代码from modelsapp.models import *
print(Room.objects.all())
这非常有效。现在考虑第二种情况。我现在只需运行./manage.py shell
然后输入以下命令 -
>>>from modelsapp.models import *
>>>def init():
... print(Room.objects.all())
...
>>>init()
这也很有效。但是现在当我在第一种情况下通过文件运行上面的代码时,它会显示NameError: name 'Room' is not defined
看起来我刚刚导入的模型类在函数内部无法访问。 这种行为有点奇怪。
请帮忙。如果我遗漏了任何事情,请在下面做评论。
编辑:由于这有点奇怪的行为而且无法找到任何答案,我只是将类Room
直接传递给函数init()
作为参数来获取截至目前已完成的工作。
答案 0 :(得分:0)
运行django shell后,可以使用以下命令运行脚本:
>>>execfile('filename.py')
如果你想在普通的python shell(不使用python manage.py shell)中运行它,你必须这样做:
import django
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project(name.settings")
django.setup()