¿Existe una convención de nomenclatura para las aplicaciones de Django?

115

¿Existe una convención de nomenclatura preferida para crear una aplicación Django que consta de más de una palabra? Por ejemplo, ¿cuál de los siguientes se prefiere?

  1. my_django_app
  2. my-django-app Actualización: no permitido sintácticamente
  3. mydjangoapp Solución recomendada

Si bien todas ellas pueden ser opciones 1 y 3 sintácticamente permitidas, ¿hay alguna preferencia? Al observar la forma en que Django crea los nombres de las tablas combinando el nombre de la aplicación y el nombre del modelo con un guión bajo, me inclino por la opción # 1.

Pensamientos

Matthew Rankin
fuente

Respuestas:

108

Deben ser nombres de paquete válidos. Eso descarta 2 ("import my-django-app" sería un error de sintaxis). PEP 8 dice:

Los módulos deben tener nombres cortos en minúsculas. Se pueden usar guiones bajos en el nombre del módulo si mejora la legibilidad. Los paquetes de Python también deben tener nombres cortos en minúsculas, aunque se desaconseja el uso de guiones bajos.

Entonces, 1 y 3 son ambos válidos, pero 3 sería el enfoque recomendado.

thraxil
fuente
1
Una publicación de blog útil sobre este problema, solo para expandir: streamhacker.com/2011/01/03/django-application-conventions
Akhorus
7
Hola @ surfer190. Dos cucharadas de Django contienen un montón de buenas prácticas. Eligen el singular: blog. Es la misma opción cuando está creando un modelo: se prefiere Blog sobre Blogs.
Wim Feijen
2
En general, recomendaría usar guiones bajos, porque mejoran la legibilidad y se usan comúnmente, por ejemplo, uso mucho django_extensions y django_debug_toolbar.
Wim Feijen
14
@WimFeijen, parece que Two scoops of Django, al menos aquí , recomienda usar 'versión plural del modelo principal de la aplicación' para los nombres de las aplicaciones, con excepciones como una aplicación llamada blog, una 'buena excepción'.
Caco
Me quedo corregido. Gracias @Caco por investigar esto y educarme.
Wim Feijen
11

algunos buenos ejemplos

  • graphene_django
  • usuarios
  • pedidos
  • oauth2_provider
  • rest_framework
  • centro

en términos simples, app_namedebe tener nombres cortos y en minúsculas. Se pueden usar guiones bajos en el nombre del módulo si mejora la legibilidad. también debe tener un nombre corto y puede ser un nombre plural y singular

Jamil Noyda
fuente
7

Los nombres del directorio de aplicaciones deben ser un nombre de paquete de Python válido. Esto significa que la opción 2 es completamente inadmisible como nombre de paquete, aunque todavía se puede utilizar para otros fines, como la documentación. Al final, todo se reduce al estilo personal. Si prefiere la opción 3, úsela.

Ignacio Vázquez-Abrams
fuente
0

Mis votos por 1 y 3, pero puedes consultar varias aplicaciones populares: http://www.django-cms.org/ http://geodjango.org/

Guardia
fuente
2
Incluso hay más aplicaciones aquí: djangopackages.org . Tenga en cuenta que los paquetes a menudo se nombran usando minuses: django-debug-toolbar, mientras que debe usar "django_debug_toolbar" en su configuración INSTALLED_APPS.
Wim Feijen