Existe uma convenção de nomenclatura para aplicativos Django

115

Existe uma convenção de nomenclatura preferencial para a criação de um aplicativo Django consistindo em mais de uma palavra? Por exemplo, qual das opções a seguir é a preferida?

  1. my_django_app
  2. my-django-app Atualização: não permitido sintaticamente
  3. mydjangoapp Solução recomendada

Embora todas elas possam ser as opções 1 e 3 são sintaticamente permitidas, há uma preferência? Observando como o Django cria os nomes das tabelas combinando o nome do aplicativo e o nome do modelo com um sublinhado, estou me opondo à opção nº 1.

Pensamentos?

Matthew Rankin
fonte

Respostas:

108

Eles devem ser nomes de pacote válidos. Isso exclui 2 ("import my-django-app" seria um erro de sintaxe). PEP 8 diz:

Os módulos devem ter nomes curtos, todos em minúsculas. Sublinhados podem ser usados ​​no nome do módulo se melhorar a legibilidade. Os pacotes Python também devem ter nomes curtos, todos em minúsculas, embora o uso de sublinhados seja desencorajado.

Portanto, 1 e 3 são válidos, mas 3 seria a abordagem recomendada.

thraxil
fonte
1
Uma postagem útil no blog sobre esse problema, apenas para expandir: streamhacker.com/2011/01/03/django-application-conventions
Akhorus
7
Olá @ surfer190. Duas colheres de Django contém uma tonelada de boas práticas. Eles escolhem o singular: blog. É a mesma escolha quando você está criando um Modelo: Blog é preferível a Blogs.
Wim Feijen
2
Em geral, eu recomendaria usar sublinhados, porque eles melhoram a legibilidade e são comumente usados, por exemplo, eu uso muito django_extensions e django_debug_toolbar.
Wim Feijen
14
@WimFeijen, parece que Two scoops of Django, pelo menos aqui , recomenda o uso de 'versão plural do modelo principal do aplicativo' para nomes de aplicativos, com exceções como um aplicativo chamado blog, uma 'boa exceção'.
Caco
Eu estou corrigido. Obrigado @Caco por investigar isso e me educar.
Wim Feijen
11

alguns bons exemplos

  • graphene_django
  • Comercial
  • ordens
  • oauth2_provider
  • rest_framework
  • enquetes

em termos simples, app_namedeve ter nomes curtos, todos em minúsculas. Sublinhados podem ser usados ​​no nome do módulo se melhorar a legibilidade. também deve ter um nome curto e pode ser um nome no plural e no singular

Jamil Noyda
fonte
7

Os nomes do diretório do aplicativo devem ser um nome de pacote Python válido. Isso significa que a opção 2 é completamente inadmissível como nome de pacote, embora ainda possa ser usada para outros propósitos, como documentação. No final das contas, tudo se resume ao estilo pessoal. Se você preferir a opção 3, use-a.

Ignacio Vazquez-Abrams
fonte
0

Meus votos para 1 e 3, mas você pode verificar vários aplicativos populares: http://www.django-cms.org/ http://geodjango.org/

Guarda
fonte
2
Ainda mais aplicativos estão aqui: djangopackages.org . Lembre-se de que os pacotes são freqüentemente nomeados usando minuses: django-debug-toolbar, enquanto você deve usar "django_debug_toolbar" em sua configuração INSTALLED_APPS.
Wim Feijen