Confusión al importar vistas basadas en clases genéricas en Django.
Mientras exploraba la documentación de referencia y algunos tutoriales, he visto que la importación de las vistas basadas en clases genéricas de Django se realiza de varias formas:
from django.views.generic import TemplateView, ListView
O bien:
from django.views.generic.base import TemplateView
from django.views.generic.list import ListView
He probado a experimentar con ambas tácticas y ambas parecen funcionar, sin embargo, la primera opción parece menos correcta.
¿Todas las vistas basadas en clases genéricas también existen dentro del módulo genérico, así como en los submódulos? ¿Puede Python importar clases de submódulos simplemente importando un módulo superior? ¿Qué está sucediendo realmente aquí?
¡Cualquier ayuda sería muy apreciada!
davy.ai
Sí, todas las vistas basadas en clases genéricas de Django existen dentro del módulo genérico, así como en sus submódulos, como
generic.base
ygeneric.list
. En Python, puedes importar clases de submódulos solo importando el módulo superior. Cuando importasfrom django.views.generic import TemplateView, ListView
, estás importando todas las clases dentro del módulogeneric
, incluyendo aquellas en los submódulos. Sin embargo, importar clases específicas de los submódulos, como enfrom django.views.generic.base import TemplateView
ofrom django.views.generic.list import ListView
, puede ser una práctica mejor para claridad y organización en proyectos más grandes. En última instancia, ambos métodos son válidos y funcionarán perfectamente.