Django管理命令文档显示了在app/management/commands文件夹中创建的所有命令。是否可以将命令放入子文件夹中,如app/management/commands/install和app/management/commands/maintenance?这将如何完成?Django:将管理命令拆分为子文件夹
5
A
回答
5
不幸的是,从Django 1.4开始,似乎没有办法做到这一点。为django.core.management.__init__.py
来源有这样的方法:
def find_commands(management_dir):
"""
Given a path to a management directory, returns a list of all the command
names that are available.
Returns an empty list if no commands are defined.
"""
command_dir = os.path.join(management_dir, 'commands')
try:
return [f[:-3] for f in os.listdir(command_dir)
if not f.startswith('_') and f.endswith('.py')]
except OSError:
return []
正如你所看到的,只考虑文件直接在commands
文件夹内,忽略任何子文件夹。但是,如果“猴子补丁”这个功能不知何故,其余代码应该可以正常工作,因为实际创建Command
实例的代码是这样的:
def load_command_class(app_name, name):
"""
Given a command name and an application name, returns the Command
class instance. All errors raised by the import process
(ImportError, AttributeError) are allowed to propagate.
"""
module = import_module('%s.management.commands.%s' % (app_name, name))
return module.Command()
所以,如果你有一个命令叫subfolder.command
它会加载正确的脚本并实例化正确的类。
然而,从实际的角度来看,我看不出这样做的用处。当然,拥有“命名空间”命令会很好,但是如果你愿意的话,你总是可以用某个名字作为前缀,如果使用别的东西作为分隔符(如_
)。命令名称长度 - 以及在终端中键入它们所需的击键次数 - 将相同...
相关问题
- 1. 将批处理文件命令拆分为Windows中的多行
- 2. 将文件拆分为文件夹
- 3. 将大型XML文件拆分为Hadoop的可管理部分
- 4. 创建django管理命令
- 5. Django管理命令和argparse
- 6. Daemonize Django管理命令
- 7. Windows重命名子文件夹命令
- 8. 在管道内用split命令拆分文件后命名文件
- 9. 根据歌曲时间将文件拆分到子文件夹
- 10. Linux shell命令拆分日志文件
- 11. hadoop命令在HDFS上拆分文件
- 12. 将文件夹重命名命令发送到Windows资源管理器
- 13. 使用批处理命令比较文件夹和子文件夹文件
- 14. 使用Automator和“拆分”命令拆分文件
- 15. 运行一个脚本,它位于命令文件夹管理文件夹下的django应用程序中
- 16. 需要使用DOS命令将文件拆分为多个文件
- 17. Spark根据字段将文件拆分为多个文件夹
- 18. 将文件拆分为C++
- 19. 将文件拆分为块
- 20. 将文件夹拆分成一定大小的文件夹
- 21. 批处理命令打开文件夹
- 22. SSH命令更改子文件夹
- 23. 批处理文件:拆分文件名和文件夹
- 24. 将文本文件拆分成句子
- 25. Django管理命令看不到参数?
- 26. django找不到管理命令
- 27. Django管理命令克隆在Dotcloud上
- 28. django注册管理命令如何
- 29. Django的管理命令的MySQL错误
- 30. 的Django 1.2 - 管理 - 命令 - 在crontab中
您能给出有关您的问题的更多详细信息吗?你在找什么? https://docs.djangoproject.com/en/dev/howto/custom-management-commands/ – Marat
我想把命令放到app/management/commands的子文件夹中。我为这个问题添加了更多细节。 –