2010-12-30 3 views
2

Django docs says:Eindeutige Namen in INSTALLED_APPS Django Einschränkung

das letzte punktierte Teil des Pfades zum Modul in INSTALLED_APPS definiert muss

eindeutig sein

Ich bin ein CMS zu entwickeln, basierend auf Django . Und hier kommt das Problem: Der Moment wird kommen, wenn zwei Entwickler von Drittanbietern zwei verschiedene Apps mit demselben Namen erstellen.

Warum ist es so? Gibt es eine Möglichkeit, diese Einschränkung zu überwinden?

+1

Es ist so, weil es auf Open-Source-, Freiwilligen-Projekt und die Zeit/Manpower wurde noch nicht gewidmet, um vollständig und richtig zu korrigieren, was ein bekannter Fehler ist. Es wurde bereits viel Zeit und Ressourcen für die Lösung dieses Problems aufgewendet, und es wird behoben werden. –

Antwort

3

Zur Zeit ist die einzige Lösung die Verwendung eindeutiger Anwendungsnamen. Dies ist eine bekannte Einschränkung, an der gerade gearbeitet wird.

Als Referenz war es einer der accepted projects during the 2010 Google Summer of Code by Arthur Koziel, und Sie können some of the background and design considerations on Django's 2010 GSOC wiki page sehen.

Meines Wissens nach war Arthurs Arbeit größtenteils erfolgreich, aber aufgrund von Bedenken, die 1.3-Version als Feature-Light/Bugfix-Heavy Release zu veröffentlichen, wurde beschlossen, den App-Lade-Refactor-Zweig bis zur 1.4-Entwicklung in den Trunk zu verschieben Zyklus.

2

Das liegt hauptsächlich daran, dass Django den letzten Teil an einigen Stellen als "app_label" -Eigenschaft verwendet.

Zum Beispiel kann someModel._meta.app_label in einem Multi-Datenbank-Szenario verwendet werden, um zu entscheiden, in welcher Datenbank eine Modellinstanz gespeichert wird. Es wird auch für die Verwaltungsbefehle verwendet (Sie müssen "manage.py sqlall sites" anstelle von "django.contrib.sites" eingeben).

Wie umgehen Sie diese Einschränkung? Nun, ich denke, das Umbenennen von Apps sollte funktionieren, wenn die App nicht von ihrem Namen abhängig ist. Aber die meisten Apps verwenden den App-Namen in URLconf, zum Beispiel (patterns("appname.views", ...)), das müsste auch geändert werden.

Aber im Ernst, warum sollte man zwei Apps mit dem gleichen Namen installieren? Wenn sie wirklich den gleichen Namen haben, haben sie normalerweise die gleiche Funktionalität (z. B. Apps, die "Paginierung" genannt werden), so dass es nicht notwendig ist, mehr als eine zu verwenden.

+1

Warum sollte jemand mehr als 640k brauchen? :) – webjunkie

+0

Warum sollte jemand einen PC brauchen? – clopez

0

Der Moment wird kommen, wenn zwei Entwickler von Drittanbietern zwei verschiedene Apps mit demselben Namen erstellen.

Falsch.

Sie können ihre Anwendungen trivial umbenennen, um einzigartig zu sein.

Gibt es eine Möglichkeit, diese Einschränkung zu überwinden?

Ja. Benennen Sie die Anwendung um. Es ist einfach. Sie ändern den Paketnamen und es hat sich geändert. Wie schwer kann das sein?

+1

Wenn sie in systemweiten Verzeichnissen installiert sind, ist das nicht immer so einfach. –

+1

@Ignacio Vazquez-Abrams: Wir hatten nie irgendwelche Probleme. Aber ich denke, es gibt Möglichkeiten, es schwierig zu machen. –