Уникальные имена в ограничении INSTALLED_APPS Django - PullRequest
2 голосов
/ 30 декабря 2010

Django docs говорит :

конечная пунктирная часть пути к модулю, определенному в INSTALLED_APPS, должна быть уникальной

I'mразработка CMS на основе Django.И тут возникает проблема: наступит момент, когда два сторонних разработчика создадут два разных приложения с одинаковым именем.

Почему это так?Есть ли возможность преодолеть это ограничение?

Ответы [ 3 ]

3 голосов
/ 30 декабря 2010

Пока единственное решение - использовать уникальные имена приложений. Это известное ограничение, над которым в настоящее время работают.

Для справки: это был один из принятых проектов во время Google Summer of Code 2010 года от Артура Козила , и вы можете ознакомиться с некоторыми предпосылками и соображениями дизайна на вики-странице GSOC в Django 2010 года. .

В настоящее время я понимаю, что работа Артура была в значительной степени успешной, но из-за опасений по поводу того, что выпуск 1.3 станет релизом с расширенными возможностями / исправлениями ошибок, было решено отложить объединение ветки рефактора загрузки приложения в транк до цикла разработки 1.4. .

2 голосов
/ 30 декабря 2010

Это в основном потому, что Django использует последнюю часть как свойство "app_label" в некоторых местах.

Например, someModel._meta.app_label может использоваться в сценарии с несколькими базами данных, чтобы решить, в какой базе данных хранится экземпляр модели. Он также используется для команд управления (вы должны ввести «manage.py sqlall sites» вместо «django.contrib.sites»).

Как обойти это ограничение? Ну, я думаю, что переименование приложения должно работать, если приложение никак не зависит от его имени. Но большинство приложений на самом деле используют имя приложения в URLconf, например (patterns("appname.views", ...)), поэтому его тоже нужно изменить.

А если серьезно, зачем устанавливать два приложения с одинаковым именем? Если у них действительно одно и то же имя, они обычно имеют одинаковую функциональность (например, приложения, называемые «нумерацией страниц»), поэтому нет необходимости использовать более одного.

0 голосов
/ 30 декабря 2010

наступит момент, когда два сторонних разработчика создадут два разных приложения с одинаковым именем.

Ложные.

Они могут легко переименовать свои приложения в уникальные.

Есть ли возможность преодолеть это ограничение?

Да. Переименуйте приложение. Это просто. Вы меняете имя пакета, и оно меняется. Как трудно это может быть?

...