Un Vistazo Rápido a Django

José Miguel Amaya Camacho

www.pythonpiura.org

FLISOL 2017 Sede Loja Ecuador

José Miguel Amaya Camacho

  • Programador Python y fundador de Python Piura.
  • Activista del Software Libre
  • Actualmente trabajo como programador en modalidad remota en Infobibliotecas S.L España.
  • Colaborador del proyecto Nomadizers

Python Piura

  • Comunidad de Programadores de Python en la ciudad de Piura
  • Hacemos eventos, charlas, talleres para difundir el lenguaje de programación python
  • Tenemos un blog donde escribimos nuestras experiencias con python, django, odoo, etc.

¿Qúe es Django?

  • Es un framework (conjunto de componentes que te ayudan a desarrollar sitios web más fácil y rápidamente) para aplicaciones web gratuito y open source, escrito en Python.
  • Nos permite trabajar con python del lado del servidor(backend).
  • Soporta múltiples bases de datos.
  • Se puede desplegar en varios servidores web.

Filosofía Django

  • Agilizar el desarrollo de software.
  • Bajo acoplamiento entre componentes.
  • DRY (Don't repeat yourself).
  • URLs claras y limpias.
  • Versatilidad al máximo.
  • MTV - Model Template View, una variación del MVC Modelo Vista Controlador

Arquitectura Django

  • ¿Cuál es la Forma de Almacenar un Dato? Modelo
  • ¿Que dato se debe mostrar? Vista
  • ¿Cómo se muestra el dato? Template

Instalación de Django

  • En Ubuntu y en casi todas las distribuciones GNU/Linux se puede utilizar pip que es una especie de gestor de paquetes para python y funciona de manera muy sencilla.

pip install django

  • Se recomienda instalarlo sobre un entorno virtual, que es un entorno aislado que contiene una copia exacta del python pero en una carpeta definida por el usuario.

Preparación del Entorno

  • Para crear un nuevo proyecto, primero creo el entorno virtual para trabajar con este:

virtualenv flisol

  • Luego hay que activar el entorno virtual para proceder a hacer la instalación de django en el mismo:

source flisol/bin/activate

  • Finalmente hacemos la instalación de django con pip tal como hemos visto en el slide anterior.

Creando un Nuevo Proyecto

  • El nuevo proyecto se crea de la siguiente manera:        

django-admin startproject flisol

  • De esta manera ya hemos creado el proyecto flisol que tiene una estructura definida por defecto por django.

Estructura de un Proyecto Django

  • Proyecto: contiene la configuración y los componentes del sitio web.
  • Aplicación: un componente web que tiene una funcionalidad.

El archivo settings.py

  • Este archivo tiene toda la configuración de nuestro proyecto, conexión a la base de datos, rutas a los archivos estáticos, aplicaciones instaladas, idioma a utilizar, zona horaria, etc.
  • Pueden existir varios archivos settings, para cada ambiente de trabajo: testing, local, production.
  • Django por defecto solamente crea uno.

El archivo urls.py

  • Este archivo tiene la configuración de nuestras urls, existe uno para todo el proyecto y es posible crear uno para cada aplicación que tengamos.
  • Permite manejar de manera muy sencilla las urls y trabaja con expresiones regulares.

El archivo wsgi.py

  • Al iniciar un proyecto nuevo en django se crea un archivo llamado wsgi.py que contiene una aplicación que se puede llamar.
  • Es utilizado tanto por el servidor de desarrollo de Django como en las implementaciones de WSGI de producción.

Las Aplicaciones

  • Una aplicación es un componente que tiene una funcionalidad especifica, por ejemplo en un sitio web cualquiera podemos tener una aplicación para el blog, los foros, la galería de fotos, etc.
  • Cada aplicación tiene sus modelos y vistas representados en archivos:
    • models.py, views.py
  • Es posible tener archivos para las urls y los formularios web también:
    • urls.py, forms.py

Creación de una Aplicacion

  • Para crear una nueva aplicación debemos ingresar primero a la carpeta donde tenemos nuestro proyecto:

cd flisol

  • Ya en la carpeta procedemos a crear la aplicación:

python manage.py startapp blog

El Servidor de Desarrollo

  • Django nos proporciona por defecto un servidor de desarrollo para trabajar localmente, con esto nos olvidamos de estar instalando cosas como xampp, lampp, etc.
  • Por defecto corre en el puerto 8000, pero es posible cambiar el puerto
  • Solamente permite un usuario en ejecución.
  • No debe usarse nunca en producción.

python manage.py runserver

Las Migraciones

  • Las migraciones son la forma como almacena django los cambios en nuestros modelos, son archivos de texto plano con código python.
  • Luego de hacer un cambio en nuestro modelo, vamos a proceder a crear la migración correspondiente:

python manage.py makemigrations

  • Y para proceder a reflejar estos cambios en nuestra base de datos hacemos lo siguiente:

python manage.py migrate

El sitio de Administracion

  • Django nos proporciona por defecto un sitio ya completamente construido para administrar nuestros usuarios y aplicaciones, registrar datos, modificarlos y eliminarlos sin mayor esfuerzo adicional y de cara al usuario final con permisos de administrador.
  • Podemos hacer uso del sitio web de administracion ingresando a la url /admin.
  • Para habilitar el uso del administrador en las aplicaciones es necesario crear en cada una de ellas el archivo admin.py.

El Superusuario de Django

  • Para poder acceder al sitio de administracion de un proyecto nuevo es necesario crear un usuario, en este caso un superusuario que va a tener acceso al admin y a todos las aplicaciones de nuestro proyecto sin necesidad de asignarle antes ningún permiso, para crearlo se procede de la siguiente manera:

python manage.py createsuperuser

Los Modelos

  • Un modelo de Django es una descripción de los datos mediante código python que son reflejados en la base de datos.
  • Un modelo ejecuta código SQL por detrás y retorna estructuras de datos convenientes en Python.
  • Django también usa modelos para representar conceptos de alto nivel que no necesariamente pueden ser manejados por SQL.
  • Cada aplicación tiene un archivo models.py donde se colocan los modelos.

Las Vistas

  • Una vista es una función o una clase que básicamente hace dos cosas, toma como argumento un objeto en el que va la información referente a la solicitud que estamos haciendo, como por ejemplo si el método empleado es POST o GET o el directorio donde está la página solicitada; y devuelve otro objeto con la información de la página que va a mostrar o una excepción si algo ha ido mal.

  • Cada aplicación tiene un archivo views.py donde se colocan las vistas.

Las Plantillas

  • La parte visual y de interacción con el usuario está representado en las plantillas que son archivos html y que pueden contener código javascript, aunque se recomienda que se separen para una mejor estructura.
  • Cada aplicación contiene una carpeta llamada templates donde se guardan estas plantillas, es posible tambien tener una carpeta general a nivel del proyecto para tener todas las plantillas agrupadas.
  • Las plantillas pueden heredarse y reutilizarse.

Los archivos estáticos

  • Los archivos estáticos son aquellos archivos que no cambian nunca o casi nunca, generalmente son los archivos javascript u hojas de estilo(css).
  • Es posible que cada aplicación tengan su propia carpeta llamada static para alojar a estos archivos estáticos o también podemos tener una a nivel de proyecto, en despliegues de producción incluso se puede tener un servidor para aparte para los archivos estáticos.

El ORM de Django

  • ORM son las siglas de Object Relational Mapping y traducido sería algo así como, Mapeo Objeto-Relacional.
  • Django tiene un ORM muy poderoso que hace que nos olvidemos  de las consultas SQL.
  • El ORM de django nos permite trabajar con los objetos, crearlos, modificarlo, eliminarlos y consultarlos de manera individual o agrupada, haciendo mas fácil el desarrollo.

Django Rest Framework

  • DRF es otra historia y una bastante larga, pero en resumen es una librería que nos permite construir un API REST sobre Django de forma sencilla.
  • Ofrece una alta gama de métodos y funciones para el manejo, definición y control de nuestros recursos(endpoints).

¿Donde encontrar mas información?

  • Visiten nuestro sitio web.
    • http://pythonpiura.org/recursos/
    • http://pythonpiura.org/categories/django/
  • Visiten la documentación oficial del proyecto:
    • https://docs.djangoproject.com/en/1.11/

 

 

MUCHAS GRACIAS

FLISOL 2017 SEDE LOJA ECUADOR

Un Vistazo Rápido a Django

By Miguel Amaya Camacho

Un Vistazo Rápido a Django

Presentación de Django

  • 890