Introducción a Django

José Miguel Amaya Camacho

www.pythonpiura.org

Loja Ecuador

José Miguel Amaya Camacho

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

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

Preparación del Entorno

  • Vamos a crear una carpeta para tener todo lo relacionado a este ejemplo:

mkdir loja2017

  • En esta carpeta vamos a tener tanto nuestro proyecto django como el entorno virtual de python, así que ingresamos a ella:

cd loja2017

Preparación del Entorno

  • Para empezar un nuevo proyecto, primero creamos el entorno virtual, que es un entorno aislado que contiene una copia exacta del python pero en una carpeta definida por el usuario:

virtualenv vtaller

  • Activamos el entorno virtual para proceder a hacer la instalación de django en el mismo:

source vtaller/bin/activate

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 siempre instalarlo sobre un entorno virtual, tal como estamos haciendo en este ejemplo. Pero también es posible hacerlo directamente.

Creando un Nuevo Proyecto

  • El nuevo proyecto se crea de la siguiente manera:        

django-admin startproject taller

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

El Servidor de Desarrollo

  • Django nos da un servidor de desarrollo para trabajar localmente, no hay necesidad de instalar nada mas.
  • Corre en el puerto 8000 pero se puede cambiar de puerto.
  • Solamente permite un usuario en ejecución.
  • No debe usarse nunca en producción.
  • Para usarlo debemos ingresar a la carpeta del proyecto:

cd taller

python manage.py runserver

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.

Creando las tablas de Django en la Base de Datos

  • Si queremos usar el sitio de administración o ya empezar a desarrollar aplicaciones debemos primero crear toda la estructura necesaria en la base de datos para que django funcione correctamente, esto lo hacemos con una migración, de la siguiente manera:

 

python manage.py migrate

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

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. Urls Limpias.

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.
  • Es una especie de punto de arranque de la aplicació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 asegurarnos de estar en la carpeta donde tenemos nuestro proyecto.
  • Hacemos la creación de la aplicación de la siguiente manera:

 

python manage.py startapp miaplicacion

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

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

COMUNIDAD DE SOFTWARE LIBRE LOJA ECUADOR

Made with Slides.com