2024-04-26 12:30:41 发布
网友
我需要从Django shell执行一个Python脚本。我试过:
./manage.py shell << my_script.py
但没用。只是在等我写点什么。
<<部分错误,请改用<:
<<
<
$ ./manage.py shell < myscript.py
你也可以:
$ ./manage.py shell ... >>> execfile('myscript.py')
对于Python3你需要使用
>>> exec(open('myscript.py').read())
不建议您在shell中这样做,这是因为您不应该真正地从django环境中执行随机脚本(但这里有的方法,请参阅其他答案)。
shell
如果这是一个将运行多次的脚本,那么最好将其设置为custom commandie
$ ./manage.py my_command
为此,在management和commands的子目录中创建一个文件,即
management
commands
my_app/ __init__.py models.py management/ __init__.py commands/ __init__.py my_command.py tests.py views.py
在此文件中定义自定义命令(确保文件名是要从./manage.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
对于任何使用Django 1.7+的人来说,仅仅导入settings模块似乎是不够的。
经过一番挖掘,我找到了这个堆栈溢出的答案:https://stackoverflow.com/a/23241093
你现在需要:
import os, django os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapp.settings") django.setup() # now your code can go here...
没有执行上述操作,我就得到了一个django.core.exceptions.AppRegistryNoReady错误。
django.core.exceptions.AppRegistryNoReady
我的脚本文件与我的django项目位于同一目录中(即与manage.py位于同一文件夹中)
<<
部分错误,请改用<
:你也可以:
对于Python3你需要使用
不建议您在
shell
中这样做,这是因为您不应该真正地从django环境中执行随机脚本(但这里有的方法,请参阅其他答案)。如果这是一个将运行多次的脚本,那么最好将其设置为custom commandie
为此,在
management
和commands
的子目录中创建一个文件,即在此文件中定义自定义命令(确保文件名是要从
./manage.py
执行的命令名)对于任何使用Django 1.7+的人来说,仅仅导入settings模块似乎是不够的。
经过一番挖掘,我找到了这个堆栈溢出的答案:https://stackoverflow.com/a/23241093
你现在需要:
没有执行上述操作,我就得到了一个
django.core.exceptions.AppRegistryNoReady
错误。我的脚本文件与我的django项目位于同一目录中(即与manage.py位于同一文件夹中)
相关问题 更多 >
编程相关推荐