【问题标题】:How to write custom django manage.py commands in multiple apps如何在多个应用程序中编写自定义 django manage.py 命令
【发布时间】:2013-07-31 05:43:18
【问题描述】:

假设我的 django 项目中有两个或多个应用程序,当我只有一个应用程序 A 时,我能够成功编写和执行自定义 manage.py 命令。

现在我有一个新应用程序B,正如https://docs.djangoproject.com/en/dev/howto/custom-management-commands/ 中提到的,我创建了B/manangement/commands 的目录结构并编写了一个自定义模块。

当我运行 python manage.py 时,它一直在抱怨Unknown command。但是,如果我将此命令移动到其他应用程序,即文件夹A/management/commands,然后运行python manage.py <command>,它会无缝运行。

知道如何解决这个问题吗?

【问题讨论】:

  • 没有你向我们展示你所做的一切。
  • 可能你没有在设置中的已安装应用中添加B。
  • 我猜是错字,但最好指出来。 “管理”一词拼写错误。
  • 仅作记录:我在应用程序中有相同的命令(是的,怪我),只有在 INSTALLED_APPS 列表中首先提到的应用程序的命令被识别。

标签: python django django-admin manage.py


【解决方案1】:

正如@Babu 在 cmets 中所说,看起来您可能没有在您的 settings.py 中将您的应用添加到 INSTALLED_APPS

您也可能缺少managementcommands 文件夹中的__init__.py 文件(python 模块中需要这些文件)。

另外,(很抱歉)您可能拼错了“管理”或“命令”,甚至是您正在运行的命令的名称。

【讨论】:

  • 谢谢,init.py 文件在内部目录中,在更高的目录中没有。
【解决方案2】:

很可能,您的 settings.py 中没有包含应用 B

如果你只是在没有指定命令的情况下运行python manage.py,它将打印 Django 可以找到的命令列表。

这可以帮助排除命令名称拼写错误,但不能回答您是否制作了 managementcommands 两个软件包,或者应用 B 根本没有在您的 settings.INSTALLED_APPS 中列出的问题

【讨论】:

    【解决方案3】:

    您似乎没有在我们的 settings.py 中的 INSTALLED_APPS 中注册您的 应用 B。 您还需要在两个文件夹(ma​​nagementcommands)中添加一个 __init__.py 文件以使其成为一个包。确保正确拼写文件夹名称。

    【讨论】:

      猜你喜欢
      • 2013-04-08
      • 1970-01-01
      • 2013-10-05
      • 2014-05-21
      • 1970-01-01
      • 2010-10-28
      • 1970-01-01
      • 2014-08-18
      相关资源
      最近更新 更多