Python 如何从代码中调用django自定义命令?call_command()不';行不通

Python 如何从代码中调用django自定义命令?call_command()不';行不通,python,django,Python,Django,我正在尝试创建一个电报机器人,将图像上传到django网站。您向bot发送图片->bot将图片上载到服务器并向模型添加信息->图片显示在网页上 我被“机器人将信息添加到模型”部分卡住了。 基本上,我想做的是使用django.core.management.call_命令从添加信息的代码中调用自定义命令 结构如下 website/ bot.py manage.py myapp/ __init__.py management/

我正在尝试创建一个电报机器人,将图像上传到django网站。您向bot发送图片->bot将图片上载到服务器并向模型添加信息->图片显示在网页上

我被“机器人将信息添加到模型”部分卡住了。 基本上,我想做的是使用django.core.management.call_命令从添加信息的代码中调用自定义命令

结构如下

website/
    bot.py
    manage.py
    myapp/
        __init__.py
        management/
            __init__.py
            commands/
                __init__.py
                myapp_task.py
        views.py
这是我的自定义命令

# myapp_task.py
from django.core.management.base import BaseCommand
from picfeed.models import Captions

class Command(BaseCommand):
    help = 'Adds captions to the model'

    def add_arguments(self, parser):
        parser.add_argument('cap_text', type=str)

    def handle(self, *args, **options):
        cap_text = options['cap_text']
        caption = Captions(cap_text = cap_text)
        caption.save()
        self.stdout.write(self.style.SUCCESS('Successfully added caption "%s"' % cap_text))
当我使用Terminal和
python manage.py myapp_task时,“一些要添加到模型中的字符串”
工作得非常好

但是,当我从代码调用myapp_任务时,它不起作用:

#bot.py
from django.core.management import call_command

call_command('myapp_task',cap_text = 'Hello there!' )
错误:

 \website>python bot.py
Traceback (most recent call last):
  File "C:\Users\EgOl7001\AppData\Local\Continuum\anaconda3\lib\site-packages\django\core\management\__init__.py", line 103, in call_command
    app_name = get_commands()[command_name]
KeyError: 'myapp_task'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "bot.py", line 3, in <module>
    call_command('myapp_task',cap_text = 'Hello there!' )
  File "C:\Users\EgOl7001\AppData\Local\Continuum\anaconda3\lib\site-packages\django\core\management\__init__.py", line 105, in call_command
    raise CommandError("Unknown command: %r" % command_name)
django.core.management.base.CommandError: Unknown command: 'myapp_task'
\website>python bot.py
回溯(最近一次呼叫最后一次):
文件“C:\Users\EgOl7001\AppData\Local\Continuum\anaconda3\lib\site packages\django\core\management\\uuuuuuu init\uuuuuu.py”,第103行,在call\u命令中
app_name=get_commands()[command_name]
KeyError:“myapp\u任务”
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“bot.py”,第3行,在
call_命令('myapp_task',cap_text='Hello here!')
文件“C:\Users\EgOl7001\AppData\Local\Continuum\anaconda3\lib\site packages\django\core\management\\uuuuuuu init\uuuuuuu.py”,第105行,在call\u命令中
raise CommandError(“未知命令:%r”%command\u name)
django.core.management.base.CommandError:未知命令:“myapp_任务”

谢谢你的帮助!:)

您试图在不设置配置的情况下使用所有django工具箱

在使用django之前,您应该尝试在您的
bot.py
中添加类似的内容:

import os
import django
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "website.settings")
django.setup()