我有一个非常简单的案例,我想用 python 运行一个脚本
myscript.py:
from models import Company
c = Company(number="1234567890", name="Company name")
models.py:
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 execute_file myscript.py
我知道我的问题很简单,我可以导入 python manage.py shell 环境,但这不是重点。我可以以更简单的方式运行它吗?
请您参考如下方法:
是的,Django 支持:您定义一个自定义命令。它有一些支持,例如以更方便的方式解析命令参数。
您首先需要定义一个与您想要的命令同名的文件(所以这里是 myscript.py)。这应该放在 app/management/commands/ 目录中(其中 app 是您系统的 应用程序)。那么文件树看起来像:
app/
__init__.py
<b>management/</b>
<b>__init__.py</b>
<b>commands/</b>
<b>__init__.py</b>
<b>myscript.py</b>
如果您之前没有构造过任何自定义管理命令,您可能需要构造粗体文件。 __init__.py 文件只是空文件。
然后你的命令看起来像:
# app/management/commands/myscript.py
from django.core.management.base import BaseCommand
from models import Company
class Command(BaseCommand):
def handle(self, *args, **options):
c = Company(number="1234567890", name="Company name")
请注意,这个脚本实际上没有做太多:您构建了一个Company,但您没有将它存储在数据库中,所以这意味着程序通常会只是停止,或者在输入无效的情况下引发错误。
然后您可以调用您的脚本:
python3 manage.py myscript
如果您寻求帮助(使用 python3 manage.py help),命令也会被列出。
Django tutorial on custom commands 更深入地解释了您可以做什么来解析命令、添加帮助文本等。
