为什么我的自定义管理命令无法识别?

时间:2017-08-19 16:23:44

标签: python django

我制作了自定义管理命令“send_daily_report”。它只汇总了一些使用统计信息,并发送了一封电子邮件。我的意图是每天都被cron调用。

该命令如下所示(简化示例):

from django.template.loader import render_to_string
from django.contrib.auth.models import User
from django.core.mail import EmailMessage
from my_app.models import Widget
from datetime import datetime, timedelta

from django.core.management.base import BaseCommand

class Command(BaseCommand):

    commands = ['send_daily_report',]
    help = 'Daily activity report'

    def handle(self, *args, **options):

        context = {}
        context['new_widgets'] = Widgets.objects\
            .filter(date_created__gt=(datetime.now() - timedelta(1)) )\
            .count()
        text_body = render_to_string('daily_activity_report.txt', context)
        email = EmailMessage(
            subject="Daily report",
            body=text_body,
            from_email='noreply@example.com',
            to=[u.email for u in User.objects.filter(is_staff=True)]
        )
        email.send(fail_silently=True)

根据the docs,这位于/my_project/management/commands/send_daily_report.py。我在每个目录中都有一个__init__.py,一个带有pyc文件的__pycache__表示文件已编译。我正在使用Python 3,Django 1.11。 manage.py check报告没有错误。

正在运行manage.py send_daily_report给我:

  

未知命令:'send_daily_report'。

在shell中,我可以这样做:

>>> from my_project.management.commands.send_daily_report import Command

导致管理命令无法识别的原因是什么?

0 个答案:

没有答案