我正在开发一个Django应用程序,这是一个需要多个子应用程序才能保持整洁的大型系统。因此,我有一个顶层目录是Django应用程序(因为它有一个空的models.py
文件)和多个子目录,这些子目录本身也是应用程序。
我以这种方式布局我的应用程序的原因是,子应用程序是分开的,但它们永远不会在父应用程序之外单独使用。因此,单独分发它们是没有意义的。
在安装我的应用程序时,设置文件必须包含如下内容:
INSTALLED_APPS = (
...
'myapp',
'myapp.subapp1',
'myapp.subapp2',
...
)
...which显然不是最优的。这也会产生一些令人不快的结果,即要求所有子应用程序都使用它们的“内部”名称(即subapp1
、subapp2
等)。例如,如果我想要重置subapp1的数据库表,我必须键入:
python manage.py reset subapp1
这很烦人,特别是因为我有一个名为core
的子应用程序-当我的应用程序安装在用户的项目中时,它可能会与另一个应用程序的名称冲突。
我这样做是完全错误的吗,还是强迫这些“内部”应用程序用它们的全名来指代?
发布于 2010-04-12 00:17:31
你这样做是对的,因为django本身就是这样做的。例如,管理应用程序在INSTALLED_APPS
中注册为django.contrib.admin
,但要重置它,您必须使用manage.py reset admin
,实际上,manage.py reset django.contrib.admin
不起作用。
它可以被认为是django中的一个bug。
但是,您不应该担心名称冲突,因为您应该始终在virtualenv
环境中运行django,与python安装的其余部分隔离。这是一个比在普通python安装上运行django更强大、更灵活的解决方案。例如,更多信息,请访问:http://mathematism.com/2009/jul/30/presentation-pip-and-virtualenv/
https://stackoverflow.com/questions/2617522
复制相似问题