3

Django 文档

INSTALLED_APPS 中定义的模块路径的最后虚线部分必须是唯一的

我正在开发基于 Django 的 CMS。问题来了:两个第 3 方开发者创建两个同名的不同应用程序的时刻将会到来。

为什么会这样?有没有可能克服这个限制?

4

3 回答 3

3

目前,唯一的解决方案是使用唯一的应用程序名称。这是一个已知的限制,目前正在处理中。

作为参考,它是Arthur Koziel 在 2010 Google Summer of Code 期间被接受的项目之一,您可以在 Django 的 2010 GSOC wiki 页面上查看一些背景和设计注意事项

我目前的理解是 Arthur 的工作在很大程度上是成功的,但由于担心使 1.3 版本成为功能轻/错误修复重的版本,因此决定将应用加载重构分支合并到主干中,直到 1.4 开发周期。

于 2010-12-30T10:11:53.473 回答
2

这主要是因为 Django 在某些地方使用最后一部分作为“app_label”属性。

例如,someModel._meta.app_label可以在多数据库场景中使用,以决定将模型实例存储到哪个数据库。它也用于管理命令(您必须输入“manage.py sqlall sites”而不是“django.contrib.sites”)。

如何解决这个限制?好吧,如果应用程序不以任何方式依赖其名称,我认为应用程序重命名应该可以工作。但大多数应用程序实际上使用 URLconf 中的应用程序名称,例如 ( patterns("appname.views", ...)),因此也必须更改。

但说真的,为什么要安装两个同名的应用程序?如果它们真的具有相同的名称,它们通常具有相同的功能(例如称为“分页”的应用程序),因此无需使用多个。

于 2010-12-30T01:55:13.523 回答
0

当两个第 3 方开发人员创建两个具有相同名称的不同应用程序的时刻将会到来。

错误的。

他们可以轻松地将其应用程序重命名为唯一的。

有没有可能克服这个限制?

是的。重命名应用程序。这很简单。你改变了包名,它就改变了。这有多难?

于 2010-12-30T03:29:45.163 回答