En Django todo es un módulo de Python (* .py). Puede crear una carpeta de vista con un __init__.py
dentro y todavía podrá importar sus vistas, porque esto también implementa un módulo de Python. Pero un ejemplo sería mejor.
El original views.py
podría tener este aspecto:
def view1(arg):
pass
def view2(arg):
pass
con la siguiente estructura de carpetas/archivos que va a trabajar el mismo:
views/
__init__.py
viewsa.py
viewsb.py
viewsa.py
:
def view1(arg):
pass
viewsb.py
:
def view2(arg):
pass
__init__.py
:
from viewsa import view1
from viewsb import view2
El rápida explicación sería: cuando se escribe from views import view1
Python buscará Vista1 en
views.py
, que es lo que ocurre en la primera (original) case
views/__init__.py
, que es lo que sucede en el segundo caso. Aquí, __init__.py
puede proporcionar el método view1 porque lo importa.
Con este tipo de solución, es posible que tenga ninguna necesidad de cambiar import
o urlpattern
s argumentos en urls.py
Si tiene muchos métodos en cada nuevo archivo de vista, puede que le resulte útil para hacer la las importaciones en views/__init__.py
utilizan *
, así:
from viewsa import *
from viewsb import *
en realidad no sé acerca de los problemas de velocidad (pero dudo que haya alguna).
Para los modelos puede ser un poco difícil.
Divido mi archivo grande (7k líneas) views.py en archivos separados y el aumento en la velocidad fue significativo. – user1261774