Gibt es eine Namenskonvention für Django-Apps?

115

Gibt es eine bevorzugte Namenskonvention zum Erstellen einer Django-App, die aus mehr als einem Wort besteht? Welche der folgenden Optionen wird beispielsweise bevorzugt?

  1. my_django_app
  2. my-django-app Update: Syntaktisch nicht erlaubt
  3. mydjangoapp Empfohlene Lösung

Während alle Optionen 1 und 3 syntaktisch zulässig sind, gibt es eine Präferenz? Wenn ich mir anschaue, wie Django die Tabellennamen erstellt, indem er den App-Namen und den Modellnamen mit einem Unterstrich kombiniert, lehne ich mich an Option 1.

Gedanken?

Matthew Rankin
quelle

Antworten:

108

Sie müssen gültige Paketnamen sein. Das schließt 2 aus ("import my-django-app" wäre ein Syntaxfehler). PEP 8 sagt:

Module sollten kurze Namen in Kleinbuchstaben haben. Unterstriche können im Modulnamen verwendet werden, wenn dies die Lesbarkeit verbessert. Python-Pakete sollten auch kurze Namen in Kleinbuchstaben enthalten, obwohl von der Verwendung von Unterstrichen abgeraten wird.

1 und 3 sind also beide gültig, aber 3 wäre der empfohlene Ansatz.

Thraxil
quelle
1
Ein hilfreicher Blog-Beitrag zu diesem Problem, nur um es zu erweitern: streamhacker.com/2011/01/03/django-application-conventions
Akhorus
7
Hi @ surfer190. Zwei Kugeln Django enthalten eine Menge bewährter Verfahren. Sie wählen den Singular: Blog. Dies ist die gleiche Wahl, wenn Sie ein Modell erstellen: Blog wird gegenüber Blogs bevorzugt.
Wim Feijen
2
Im Allgemeinen würde ich die Verwendung von Unterstrichen empfehlen, da diese die Lesbarkeit verbessern und häufig verwendet werden. Beispielsweise verwende ich häufig django_extensions und django_debug_toolbar.
Wim Feijen
14
@WimFeijen, es scheint, dass zwei Kugeln von Django, zumindest hier , die Verwendung einer ' Pluralversion des Hauptmodells der App' für App-Namen empfehlen, mit Ausnahmen wie einer App namens Blog, einer 'guten Ausnahme'.
Caco
Ich stehe korrigiert. Vielen Dank an @Caco, dass Sie sich damit befasst und mich aufgeklärt haben.
Wim Feijen
11

einige gute Beispiele

  • graphene_django
  • Benutzer
  • Aufträge
  • oauth2_provider
  • rest_framework
  • Umfragen

in einfachen Worten, app_namesollte kurze Namen in Kleinbuchstaben haben. Unterstriche können im Modulnamen verwendet werden, wenn dies die Lesbarkeit verbessert. sollte auch einen kurzen Namen haben und es kann ein Plural- und Singularname sein

Jamil Noyda
quelle
7

App-Verzeichnisnamen müssen ein gültiger Python-Paketname sein. Dies bedeutet, dass Option 2 als Paketname völlig unzulässig ist, obwohl sie weiterhin für andere Zwecke wie die Dokumentation verwendet werden kann. Am Ende kommt es auf den persönlichen Stil an. Wenn Sie Option 3 bevorzugen, verwenden Sie diese.

Ignacio Vazquez-Abrams
quelle
0

Meine Stimmen für 1 und 3, aber Sie können mehrere beliebte Apps überprüfen: http://www.django-cms.org/ http://geodjango.org/

Bewachen
quelle
2
Noch mehr Apps gibt es hier: djangopackages.org . Beachten Sie, dass Pakete häufig mit Minuspunkten benannt werden: django-debug-toolbar, während Sie in Ihrer INSTALLED_APPS-Einstellung "django_debug_toolbar" verwenden müssen.
Wim Feijen