Existe-t-il une convention de dénomination pour les applications Django

115

Existe-t-il une convention de dénomination préférée pour créer une application Django composée de plus d'un mot? Par exemple, laquelle des propositions suivantes est préférée?

  1. my_django_app
  2. my-django-app Mise à jour: non autorisée syntaxiquement
  3. mydjangoapp Solution recommandée

Bien que tous puissent être options 1 et 3 soient syntaxiquement autorisées, y a-t-il une préférence? En regardant la façon dont Django crée les noms de table en combinant le nom de l'application et le nom du modèle avec un trait de soulignement, je me penche sur l'option n ° 1.

Pensées?

Matthew Rankin
la source

Réponses:

108

Il doit s'agir de noms de package valides. Cela exclut 2 ("import my-django-app" serait une erreur de syntaxe). PEP 8 dit:

Les modules doivent avoir des noms courts, entièrement en minuscules. Des traits de soulignement peuvent être utilisés dans le nom du module si cela améliore la lisibilité. Les packages Python doivent également avoir des noms courts, entièrement en minuscules, bien que l'utilisation de traits de soulignement soit déconseillée.

Ainsi, 1 et 3 sont tous deux valides, mais 3 serait l'approche recommandée.

Thraxil
la source
1
Un article de blog utile sur ce problème, juste pour développer: streamhacker.com/2011/01/03/django-application-conventions
Akhorus
7
Salut @ surfer190. Deux boules de Django contiennent une tonne de bonnes pratiques. Ils choisissent le singulier: blog. C'est le même choix lorsque vous créez un modèle: le blog est préféré aux blogs.
Wim Feijen
2
En général, je recommanderais d'utiliser des traits de soulignement, car ils améliorent la lisibilité et ils sont couramment utilisés, par exemple j'utilise beaucoup django_extensions et django_debug_toolbar.
Wim Feijen
14
@WimFeijen, il semble que Two scoops de Django, au moins ici , recommande d'utiliser la `` version plurielle du modèle principal de l'application '' pour les noms d'applications, avec des exceptions comme une application nommée blog, une `` bonne exception ''.
Caco
Je me suis trompé. Merci @Caco d'avoir examiné cela et de m'avoir éduqué.
Wim Feijen
11

quelques bons exemples

  • graphène_django
  • utilisateurs
  • ordres
  • oauth2_provider
  • rest_framework
  • les sondages

en termes simples, app_namedevrait avoir des noms courts, entièrement en minuscules. Des traits de soulignement peuvent être utilisés dans le nom du module si cela améliore la lisibilité. devrait également avoir un nom court et cela peut être un nom au pluriel et au singulier

Jamil Noyda
la source
7

Les noms de répertoire d'application doivent être un nom de package Python valide. Cela signifie que l'option 2 est complètement inadmissible en tant que nom de package, bien qu'elle puisse toujours être utilisée à d'autres fins, telles que la documentation. En fin de compte, il s'agit d'un style personnel. Si vous préférez l'option 3, utilisez-la.

Ignacio Vazquez-Abrams
la source
0

Mes votes pour 1 et 3, mais vous pouvez consulter plusieurs applications populaires: http://www.django-cms.org/ http://geodjango.org/

Garde
la source
2
Encore plus d'applications sont ici: djangopackages.org . Gardez à l'esprit que les paquets sont souvent nommés en utilisant des inconvénients: django-debug-toolbar, alors que vous devez utiliser "django_debug_toolbar" dans votre paramètre INSTALLED_APPS.
Wim Feijen