我可以移动到python项目目录(比如c:\ www\myproject),然后发出
python manage.py shell
Run Code Online (Sandbox Code Playgroud)
然后我可以使用django项目中的所有模块,从shell命令中说出以下命令:
import settings
from django.template import Template, Context
t=Template("My name is {myname}.")
c=Context({"myname":"John"})
f = open('write_test.txt', 'w')
f.write(t.render(c))
f.close
Run Code Online (Sandbox Code Playgroud)
现在,当我尝试将所有命令收集到python脚本中时,说"mytest.py",我无法执行脚本.我必须错过重要的事情.
我发出了python mytest.py
然后我得到Import error: could not import settings
它是在sys路径上吗?"
我在settings.py所在的项目目录中......
有人可以帮帮我吗?
谢谢.
phu*_*ehe 23
在Django 1.4中不推荐使用此方法.请django.conf.settings.configure()
改用(请参阅@ adiew的答案以获取示例代码).
老方法如下.
把它放在脚本的开头
from django.core.management import setup_environ
import settings
setup_environ(settings)
Run Code Online (Sandbox Code Playgroud)
这就是manage.py在幕后所做的事情.要查看它,请查看Django源代码django/core/management/__init__.py
.在执行这些行后,一切都应该就像在./manage.py shell
.
Mar*_*row 22
请尝试使用Django管理命令.
# myproject/myapp/management/commands/my_command.py
from django.core.management.base import NoArgsCommand
from django.template import Template, Context
from django.conf import settings
class Command(NoArgsCommand):
def handle_noargs(self, **options):
t=Template("My name is {myname}.")
c=Context({"myname":"John"})
f = open('write_test.txt', 'w')
f.write(t.render(c))
f.close
Run Code Online (Sandbox Code Playgroud)
然后(如果您按照文档),您将能够以下列方式执行命令:
python manage.py my_command
Run Code Online (Sandbox Code Playgroud)
adi*_*ieu 11
尝试将这两行放在脚本的开头:
from django.conf import settings
settings.configure() # check django source for more detail
# now you can import other django modules
from django.template import Template, Context
Run Code Online (Sandbox Code Playgroud)