¿Por qué debo conocer Django y GeoDjango si hago desarrollos web GIS?

Django es un framework de desarrollo web escrito en Python se emplea para la creación de páginas web. Por su parte, GeoDjango es una extensión de Django que nos permite crear aplicaciones web GIS y trabajar con datos espaciales. En este artículo veremos algunas características de este framework y sobre todo los motivos por los que nos conviene utilizarlo si vamos a desarrollar proyectos GIS en la web.

¿Por qué utilizar un framework?

Un framework es un software que proporciona al desarrollador web un conjunto de herramientas que en su conjunto permiten crear un sitio web de forma rápida y segura. Estas dos ideas son la base para utilizar un framework. Permite un desarrollo más rápido al crear la estructura del proyecto y dotarla de funcionalidades básicas, que de otro modo tendríamos que desarrollar con el consiguiente esfuerzo. La otra ventaja es la seguridad. Las páginas creadas con un framework serán más robustas y, como en el caso de Django, estarán dotadas de medidas de seguridad.

Los framework suponen una evolución en el desarrollo web. Las primeras páginas web que utilizaban HTML evolucionaron a la vez que se incorporaban nuevos lenguajes como PHP. El paso siguiente en esta evolución web lo suponen la aparición de los frameworks como Django o Flask.

¿Por qué utilizar Django? Ventajas de Django

Django es un popular framework de Python de pila completa, es por tanto de código abierto e incluye todas las características necesarias de Python de forma predeterminada. Django usa un ORM (Object Relational Mapping) o mapeador relacional de objetos para mapear objetos a las tablas de la base de datos. Esto le ayuda a utilizar el paradigma orientado a objetos para manipular datos de una base de datos. Podemos entender un ORM como una herramienta para convertir los objetos de la aplicación a un formato adecuado para ser almacenados en cualquier base de datos. Las principales bases de datos en las que trabaja Django son Oracle, MySQL, PostgreSQL y SQLite. También puede funcionar en otras bases de datos utilizando controladores de terceros.

Aquí hay algunas de las características más importantes de Django:

  • Enrutamiento de URL.
  • Autenticación.
  • Motor de plantillas.
  • Migraciones de esquemas de bases de datos.
  • Un amplio conjunto de bibliotecas listas para usar.
  • Más seguro en comparación con otros framework.

¿Qué otras ventajas nos aporta Django?

  1. Rápido. Django ha sido diseñado para ayudar a los desarrolladores a llevar las aplicaciones desde el concepto hasta su finalización lo más rápido posible.
  2. Seguro. Django se toma la seguridad en serio y ayuda a los desarrolladores a evitar muchos errores de seguridad comunes.
  3. Escalable. La escalabilidad es la capacidad del sistema informático de cambiar su tamaño o configuración para adaptarse a las circunstancias cambiantes, en consecuencia Django es capaz de adaptarse al tamaño del proyecto.

Proyectos y aplicaciones

Hay dos conceptos a tener en cuenta cuando trabajamos con Django: Los proyectos y las aplicaciones.

Un proyecto es fácil de entender. Se trata del desarrollo o de la página web que estamos construyendo. Esa página puede contener varias aplicaciones. Algunas aplicaciones las incorpora Django por defecto, otras las podemos hacer nosotros. Esas aplicaciones no son exclusivas de ese proyecto, es decir podemos utilizar la misma aplicación que hemos creado en sitios diferentes.

Al iniciar un nuevo proyecto Django nos crea una estructura de archivos y carpetas.

mysite/
    manage.py
    mysite/
        __init__.py
        settings.py
        urls.py
        asgi.py
        wsgi.py
  • El directorio raíz externo mysite/ es un contenedor para el proyecto. Su nombre no le importa a Django; se puede cambiar el nombre a lo que quieras.
  • manage.py: es una utilidad de línea de comandos que le permite interactuar con este proyecto de Django de varias maneras.
  • El mysite/ directorio interno es el paquete de Python real para su proyecto. Su nombre es el nombre del paquete de Python que deberá usar para importar cualquier cosa dentro de él .
  • mysite/__init__.py: un archivo vacío que le dice a Python que este directorio debe considerarse un paquete de Python.
  • mysite/ settings.py: Configuración para el proyecto Django.
  • mysite/ urls.py: Las declaraciones de URL para este proyecto Django; una «tabla de contenido» de su sitio impulsado por Django.
  • mysite/ asgi.py: Un punto de entrada para servidores web compatibles con ASGI para servir a su proyecto.
  • mysite/ wsgi.py: Un punto de entrada para servidores web compatibles con WSGI para servir a su proyecto.

Ahora podemos crear una aplicación, en este ejemplo llamada polls

polls/
    __init__.py
    admin.py
    apps.py
    migrations/
        __init__.py
    models.py
    tests.py
    views.py

Django por defecto trae varias aplicaciones, algunas de las cuales nos permiten la gestión de usuarios. Podemos ver en settings.py las aplicaciones:

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

¿Qué es el modelo vista controlador?

Se dice que Django utiliza el Modelo Vista Controlador(MVC)pero ¿Qué significa eso?

El MVC es una forma de separar el los componentes de una aplicación de tal forma que cada una de las partes se encargue de uno de los procesos.

Fuente: wikipedia

El Modelo: Es la representación de la información con la cual el sistema opera, por lo tanto gestiona todos los accesos a dicha información. En la aplicación que se ha creado se corresponde con models.py.

La Vista: Presenta el ‘modelo’ (información y lógica de negocio) en un formato adecuado para interactuar, por tanto requiere de dicho ‘modelo’ la información que debe representar como salida. Es decir, es lo que ve el usuario. Se corresponde con un nuevo elemento que no se crea por defecto que es templates/. Según esto templates/ son elementos diferentes o separados de la aplicación, como los HTMLs.

El Controlador: Responde a eventos e invoca peticiones al ‘modelo’ cuando se hace alguna solicitud sobre la información (por ejemplo, editar un documento o un registro en una base de datos). El ‘controlador’ hace de intermediario entre la ‘vista’ y el ‘modelo’. Se corresponde con urls.py y con views.py.

¿Qué es GeoDjango?

La misión de GeoDjango es facilitar al máximo la creación de aplicaciones web GIS y aprovechar el poder de los datos habilitados espacialmente.

GeoDjango es un módulo de contribución incluido para Django que lo convierte en un marco web geográfico. GeoDjango se esfuerza por simplificar al máximo la creación de aplicaciones web geográficas, como los servicios basados ​​en la ubicación. Sus características incluyen:

  • Campos de modelo de Django para geometrías OGC y datos ráster.
  • Extensiones al ORM de Django para consultar y manipular datos espaciales.
  • Interfaces de Python de alto nivel y débilmente acopladas para geometría GIS y operaciones ráster y manipulación de datos en diferentes formatos.
  • Edición de campos de geometría desde el administrador.

GeoDjango utiliza o mejor dicho requiere de otro software como:

  1. Por supuesto requiere de Python y Django en los que se basa.
  2. Base de datos espacial. PostgreSQL (con PostGIS), MySQL, Oracle y SQLite (con SpatiaLite) son las bases de datos espaciales admitidas actualmente. Se recomienda el uso de PostGIS.
  3. Instalación de bibliotecas geoespaciales como:

¿Qué podemos hacer con GeoDjango?

Podemos utilizar GeoDjango para:

  • Incorporar datos espaciales desde Bases de Datos.
  • Realizar consultas espaciales, (calcular áreas, distancias, perímetros, …)
  • Crear y modificar geometrías.
  • Hacer transformaciones espaciales.

En conclusión

Django es un framework que facilita la creación de sitios web usando Python. Se ocupa de las cosas difíciles para que podamos centrarnos en la creación de la aplicación web.

Django enfatiza la reutilización de los componentes, también conocida como DRY (Don’t Repeat Yourself), y viene con funciones listas para usar como sistema de inicio de sesión, conexión a la base de datos y operaciones CRUD (Crear Leer Actualizar Eliminar). Además Django es especialmente eficaz para trabajar con bases de datos.

Si ha todo esto añadimos la extensión GeoDjango, hace que se convierte en una de las mejores herramientas para el desarrollo de aplicaciones GIS en la web.

5 comentarios en «¿Por qué debo conocer Django y GeoDjango si hago desarrollos web GIS?»

  1. Hola. Estoy interesado en GeoDjango para el backend de un mapa web en lugar de PHP, pero también en Flask. ¿Cual de los dos conviene más aprender? ¿Hay alguna diferencia importante?

    Un saludo

    • Hola Joaquín:
      Podemos decir que Flask es un framework de «propósito general» mientras que Geodjando está orientado a trabajar con datos GIS. Si tu página web consiste en la publicación de un mapa, Flask puede ser una buena opción, pues lo puedes combinar con Folium. Si tu aplicación, en cambio, requiere de operaciones geoespaciales entonces debes plantearte utilizar Geodjango.
      Saludos.

  2. Hola. Estoy empezando a usar Flask para desarrollo de web apps con python. Muy interesante el artículo.Tienen algun curso de desarrollo con Django y Geodjango?

Los comentarios están cerrados.