Python 我可以用一个文件夹来代替Django自定义命令的文件吗?
我知道创建自定义Django命令的唯一方法是将该文件放入Python 我可以用一个文件夹来代替Django自定义命令的文件吗?,python,django,command,structure,customization,Python,Django,Command,Structure,Customization,我知道创建自定义Django命令的唯一方法是将该文件放入project/app/management/commands文件夹中,如下所示project/app/management/commands/my_custom_command.py 但是我想知道是否有一种方法可以创建一个目录(比如python包)而不是一个文件。应该是这样的: project ├── app | ├── management | | └── commands | | ├── my_custom
project/app/management/commands
文件夹中,如下所示project/app/management/commands/my_custom_command.py
但是我想知道是否有一种方法可以创建一个目录(比如python包)而不是一个文件。应该是这样的:
project
├── app
| ├── management
| | └── commands
| | ├── my_custom_command
| | | ├── __init__.py
| | | └── ... (other stuff like settings and output files)
| | └── ...
| └── ...
├── manage.py
└── ...
有没有办法做那样的事?我认为通过将命令保存在app文件夹中,可以使用整个app文件夹执行类似的操作,但我不喜欢这种解决方案
澄清:我已经尝试使用带有
\uuuu init\uuuuuuupy.py
文件的文件夹,但它不起作用。这是不可能的,包被排除在外,请参阅django.core.management.find\u命令
在Django 3.1.5中,它是:
def find_commands(management_dir):
"""
Given a path to a management directory, return a list of all the command
names that are available.
"""
command_dir = os.path.join(management_dir, 'commands')
return [name for _, name, is_pkg in pkgutil.iter_modules([command_dir])
if not is_pkg and not name.startswith('_')]