我想在OS shell中启动一个python文件,其中包含从django库导入的内容
我有一个非常简单的例子,我想用python运行一个脚本我想在OS shell中启动一个python文件,其中包含从django库导入的内容,python,django,Python,Django,我有一个非常简单的例子,我想用python运行一个脚本 myscript.py: from models import Company c = Company(number="1234567890", name="Company name") from django.db import models class Company(models.Model): number = models.CharField("company number", max_length=20, uniqu
myscript.py
:
from models import Company
c = Company(number="1234567890", name="Company name")
from django.db import models
class Company(models.Model):
number = models.CharField("company number", max_length=20, unique=True)
name = models.CharField("company name", max_length=30, unique=True)
class Meta:
verbose_name = "Company"
verbose_name_plural = "Companies"
models.py
:
from models import Company
c = Company(number="1234567890", name="Company name")
from django.db import models
class Company(models.Model):
number = models.CharField("company number", max_length=20, unique=True)
name = models.CharField("company name", max_length=30, unique=True)
class Meta:
verbose_name = "Company"
verbose_name_plural = "Companies"
我想运行python myscript.py
或类似的python manage.py执行文件myscript.py
我知道我的问题很简单,我可以导入
python manage.py shell
环境,但这不是重点。我可以用一种非常简单的方式运行它吗?是的,Django支持这一点:您可以定义一个自定义命令。它有一些支持,例如以更方便的方式解析命令参数
首先需要定义一个与所需命令同名的文件(因此这里myscript.py
)。这应该放在app/management/commands/
目录中(其中app
是您系统的一个应用程序)。因此,文件树如下所示:
app/
__init__.py
management/
__init__.py
commands/
__init__.py
myscript.py
请注意,这个脚本实际上做的不多:您构建了一个公司
,但您没有将其存储在数据库中,因此这意味着程序通常会停止,或者在输入无效的情况下引发错误
然后,您可以使用以下命令调用脚本:
python3 manage.py myscript
如果您请求帮助(使用python3 manage.py help
),该命令也将列出
更深入地解释了可以执行哪些操作来解析命令、添加帮助文本等。定义命令:解决方案正在运行,但仍然非常复杂。如果没有什么新的东西会接受你的答案,那就请你花点时间@СааСаааааааааааа1072
cat script.py |/manage.py shell
@WillemVanOnsem您是否介意重新编写您的示例,使其工作方式类似于python3 manage.py运行myscript.py
@СаСааСааСаааааааааа。这意味着一个人应该使用eval
,也被称为邪恶。@crmkСааааааааааааааааааа107