Czy istnieje konwencja nazewnictwa dla aplikacji Django

116

Czy istnieje preferowana konwencja nazewnictwa przy tworzeniu aplikacji Django składającej się z więcej niż jednego słowa? Na przykład, które z poniższych jest preferowane?

  1. my_django_app
  2. my-django-app Aktualizacja: niedozwolone składniowo
  3. mydjangoapp Zalecane rozwiązanie

Chociaż wszystkie z nich mogą być opcjami 1 i 3 są syntaktycznie dozwolone, czy jest jakaś preferencja? Patrząc na sposób, w jaki Django tworzy nazwy tabel, łącząc nazwę aplikacji i nazwę modelu z podkreśleniem, opieram się na opcji nr 1.

Myśli?

Matthew Rankin
źródło

Odpowiedzi:

108

Muszą to być prawidłowe nazwy pakietów. To wyklucza 2 („import my-django-app” byłoby błędem składniowym). PEP 8 mówi:

Moduły powinny mieć krótkie nazwy składające się wyłącznie z małych liter. Podkreślenia mogą być używane w nazwie modułu, jeśli poprawia to czytelność. Pakiety Pythona powinny również mieć krótkie nazwy składające się wyłącznie z małych liter, chociaż odradza się używanie podkreślenia.

Tak więc 1 i 3 są prawidłowe, ale 3 byłoby zalecanym podejściem.

thraxil
źródło
1
Pomocny wpis na blogu dotyczący tego problemu, tylko do rozwinięcia: streamhacker.com/2011/01/03/django-application-conventions
Akhorus
7
Cześć @ surfer190. Dwie miarki Django zawierają mnóstwo dobrych praktyk. Wybierają liczbę pojedynczą: blog. Jest to ten sam wybór, gdy tworzysz Model: Blog jest preferowany nad Blogami.
Wim Feijen
2
Generalnie polecałbym stosowanie podkreślenia, ponieważ poprawiają czytelność i są powszechnie używane, na przykład często używam django_extensions i django_debug_toolbar.
Wim Feijen
14
@WimFeijen, wydaje się, że Dwie miarki Django, przynajmniej tutaj , zalecają używanie „liczby mnogiej wersji głównego modelu aplikacji” do nazw aplikacji, z wyjątkami, takimi jak aplikacja o nazwie blog, „dobry wyjątek”.
Caco
Poprawiono mnie. Dzięki @Caco za przyjrzenie się temu i nauczenie mnie.
Wim Feijen
11

kilka dobrych przykładów

  • graphene_django
  • użytkowników
  • Zamówienia
  • oauth2_provider
  • rest_framework
  • ankiety

mówiąc najprościej, app_namepowinny mieć krótkie nazwy składające się wyłącznie z małych liter. Podkreślenia mogą być używane w nazwie modułu, jeśli poprawia to czytelność. również powinna mieć krótką nazwę i może to być nazwa w liczbie mnogiej i pojedynczej

Jamil Noyda
źródło
7

Nazwy katalogów aplikacji muszą być prawidłową nazwą pakietu w języku Python. Oznacza to, że opcja 2 jest całkowicie niedopuszczalna jako nazwa pakietu, chociaż nadal można jej używać do innych celów, takich jak dokumentacja. Ostatecznie wszystko sprowadza się do osobistego stylu. Jeśli wolisz opcję 3, użyj jej.

Ignacio Vazquez-Abrams
źródło
0

Moje głosy na 1 i 3, ale możesz sprawdzić kilka popularnych aplikacji: http://www.django-cms.org/ http://geodjango.org/

Strzec
źródło
2
Jeszcze więcej aplikacji jest tutaj: djangopackages.org . Pamiętaj, że pakiety są często nazywane przy użyciu minuses: django-debug-toolbar, podczas gdy w ustawieniach INSTALLED_APPS musisz użyć "django_debug_toolbar".
Wim Feijen