1

我正在运行一些与 django 应用程序有关的 python 脚本。所以我手动创建了一个文件夹(命名脚本),其中包含一些 python 脚本但不是使用./manage.py startapp scripts. 除了这个文件夹,还有一个modelsappdjango 应用程序(其中包含我的模型),然后是包含andproject的文件夹。settings.pyurls.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()以完成现在的工作。

4

1 回答 1

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()
于 2017-05-22T04:09:02.230 回答