2011-06-06 74 views
29

我有一个自定义管理命令,可以通过电子邮件发送报告。它通常从一个cron作业运行。我想要做的是在我的web应用程序中添加一个按钮,单击它时会导致admin命令在那里运行,而不是等待cron作业调用它。我该怎么做呢?我是否必须致电命令行,如从视图运行自定义管理命令

python manage.py myadmincmd 

或者我可以从视图内调用代码吗?看起来,如果我可以在视图内完成此操作而无需触及命令行,它会更干净。

+2

正如丹尼尔说,你可以用'call_command'或组织你的代码,这样,无论是管理命令和视图调用一些第三个功能实际执行邮件发送。 – 2011-06-06 11:26:57

+1

可能的重复[我怎样才能直接从测试驱动程序调用自定义Django manage.py命令?](http://stackoverflow.com/questions/907506/how-can-i-call-a-custom-django-管理-PY-命令直接从 - 一个测试驱动器) – ChillarAnand 2015-09-15 13:21:56

回答

43

您可以使用call_command

from django.core.management import call_command 
call_command('myadmincmd') 
+1

我们可以得到网页上的cron响应,因为它涉及在处理命令 – PiyusG 2013-07-12 05:56:00

+0

安慰https://docs.djangoproject.com/en/1.11/ REF/Django的管理员/#运行管理的命令从 - 您的代码 – 2017-07-08 01:16:17