从源代码中调用Django的自定义命令,并获取返回值的方法

我想做的事情

由于某种原因,我需要在Django源代码的Python文件中执行自定义命令并获取返回值,之前是通过创建Django的自定义命令来调用,使用的命令为”python manage.py custom_command_name”。

由於在日本語網站上意外地找不到相關資訊,所以我將這篇文章撰寫出來。

对于Python文件的编写方法

要调用名为「custom_command_name」的临时Django自定义命令,需按照以下方式编写:
通过这样的编写,自定义命令将被执行,并将命令的返回值存储在变量“result”中。

from django.core import management
result = management.call_command('custom_command_name')

【参考】虽然可以调用命令,但不推荐的方法(也不返回返回值)

参考信息是,在参考文献中列出的Django官方文档中有如下所述。

请避免直接从代码中调用execute()来执行自定义管理命令。而是请使用call_command()来代替。

虽然可以使用execute_from_command_line方法来调用自定义命令,但由于它内部调用了execute()方法,所以最好避免使用。

from django.core.management import execute_from_command_line
execute_from_command_line(['', 'custom_command_name'])

请查阅参考文献获取详细信息。

参考文献: 参考资料

◆Django官方文档
在”实现自定义的django-admin命令”章节中详细说明了如何在代码中调用管理命令。
链接:https://docs.djangoproject.com/ja/2.1/howto/custom-management-commands/

这是一个说明文档,可以参考,它展示了execute_from_command_line调用execute()的代码来源。
django.core.management的源代码
https://docs.djangoproject.com/fr/1.8/_modules/django/core/management/

“堆栈溢出
「Django 的 manage.py 自定义命令可以返回一个值吗?如何实现,或者为什么不能实现?」”

广告
将在 10 秒后关闭
bannerAds