66

Django y Python para todos

Embed Size (px)

Citation preview

Page 1: Django y Python para todos
Page 2: Django y Python para todos
Page 3: Django y Python para todos
Page 4: Django y Python para todos
Page 5: Django y Python para todos
Page 6: Django y Python para todos
Page 7: Django y Python para todos
Page 8: Django y Python para todos
Page 9: Django y Python para todos
Page 10: Django y Python para todos
Page 11: Django y Python para todos
Page 12: Django y Python para todos
Page 13: Django y Python para todos
Page 14: Django y Python para todos
Page 15: Django y Python para todos
Page 16: Django y Python para todos
Page 17: Django y Python para todos
Page 18: Django y Python para todos
Page 19: Django y Python para todos

Tipos y operadores básicos

Page 20: Django y Python para todos

Tipos y operadores básicos

Operador Descripción Ejemplo

+ Suma r = 3 + 2 # r es 5

- Resta r = 4 - 7 # r es -3

- Negación r = -7 # r es -7

* Multiplicación r = 2 * 6 # r es 12

** Exponente r = 2 ** 6 # r es 64

/ División r = 3.5 / 2 # r es 1.75

// División Entera r = 3.5 // 2 # r es 1.0

% Módulo r = 7 % 2 # r es 1

Page 21: Django y Python para todos

Muchas de las operaciones y funciones que operan sobre las cadenas también funcionan en las listas.

La función len devuelve la longitud de una lista, el operador + las concatena, el operador * las multiplica un número de veces, se puede hacer referencia a un elemento de la lista por su índice, el operador de corte obtiene un un fragmento de la lista:

>>> [1, 2, 3, 4,5, 6]

[1, 2, 3, 4, 5, 6]

>>> [’hola’, ’mundo’]

[’hola’, ’mundo’]

Page 22: Django y Python para todos

>>> a = [1, 6, 3, -5, 10.6]

>>> len(a)

5

>>> b = [’lista’, [’otra’, ’lista’]]

>>> a + b

[1, 6, 3, -5, 10.6, ’lista’, [’otra’, ’lista’]]

>>> 4*a

[1, 6, 3, -5, 10.6, 1, 6, 3, -5, 10.6, 1, 6, 3, -5, 10.6, 1, 6, 3, -5, 10.6]

>>> a[2]

3

>>> a[1:3]

[6, 3]

Page 23: Django y Python para todos

>>> xs=[78455, 89211, 66540, 45750]

>>> len(xs) #Devuelve la longitud de la lista

>>> xs[1]=79211 #Modifica el valor del indice 1

>>> xs.insert(2, 54988) #Inserta un elemento en un índice definido

>>> xs.append(47890) #Agrega un elemento al final de la lista

>>> xs.remove(78455) #Elimina el elemento 78455

>>> xs.index(78455) #Devuelve el índice de un valor

>>> xs.pop(0) #Extrae un valor de acuerdo a un índice

Page 24: Django y Python para todos

Colecciones (Tuplas)

Una tupla es una l ista inmutable. Una tupla no puede modificarse de ningún modo después de su creación.

Una tupla se define del mismo modo que una lista, salvo que el conjunto se encierra entre paréntesis en lugar de entre corchetes.

Los elementos de una tupla tienen un orden definido, como los de una lista. Las tuplas tienen primer índice 0, como las listas, de modo que el primer elemento de una tupla no vacía es siempre t[0].

Los índices negativos cuentan desde el final de la tupla, como en las listas.

Las porciones funcionan como en las listas.

Page 25: Django y Python para todos

Comprensiones de listas

>>> S = [x**2 for x in range(10)]

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

Page 26: Django y Python para todos

Estructuras de control (if)

a = float(raw_input('Ingrese un número: '))

if a != 0:

print 'El número no es cero.'

else:

print "El número es cero."

if a == 0:

print 'El número es cero.'

elif a > 0:

print 'El número es mayor a cero.'

else:

print "El número es menor a cero."

print "El número no es cero." if a != 0 else "El número es cero."

Page 27: Django y Python para todos

public class Empleado {

private String nombres;

private Double sueldo;

private String puesto_laboral;

public Empleado(String nombres) {

this(nombres, 850);

}

public Empleado(String nombres, Double sueldo) {

this(empleado, sueldo, "Operador");

}

public Empleado(String nombres, Double sueldo, String puesto_laboral) {

this.nombres = nombres;

this.sueldo = sueldo;

this.puesto_laboral = puesto_laboral;

}

}

Page 28: Django y Python para todos

Class Empleado(object):

def __init__(self,

nombres,

sueldo=850,

puesto_laboral="Operador")

self.nombres = nombres

self.sueldo = sueldo

self.puesto_laboral = puesto_laboral

Valores por omisión para los parámetros de los métodos

No se declaran los tipos de datos

Page 29: Django y Python para todos

Lambdas

>>> g = lambda x: x*2

>>> g(3)

6

Page 30: Django y Python para todos
Page 31: Django y Python para todos

Django

Page 32: Django y Python para todos

¿Qué es Django?

1. Un framework web escrito en Python (2.7+ y 3.3+)

2. Emplea el patrón MVC (Modelo-Vista-Controlador)

3. En Django el patrón MTV recibe el nombre MTV (Model-View-Template)

4. Las “vistas” de Django son los controladores en el MVC clásico

5. Las plantillas o “templates” con las “vistas” en el MVC clásico

6. Incluye sus propios compomentes:

Ruteador, despachador, controladores, ORM y lenguaje de plantillas

Page 33: Django y Python para todos

¿Por Qué es Django?

Bajo acoplamiento: Paradigma MVC

Mínima cantidad de código

Desarrollo ágil

Don’t Repeat Yourself (DRY)

Explícito frente a implícito

Consistencia

Page 34: Django y Python para todos

Orígenes

Nace de un periódico en Kansas, USA

Producto de la búsqueda de agilidad en el desarrollo web

Programación con plazos para periodistas (yo vivo un poco eso!)

Autores originales: Adrian Holovaty (periodista) y Jakob Kaplan-Moss

El nombre viene de Django Reinhardt, guitarrista gitano de jazz (belga)

Adrian Holovaty es un guitarrista aficionado al jazz

La mascota es un pony :)

Page 35: Django y Python para todos

Arquitectura

Page 36: Django y Python para todos

Esquema interno

Page 37: Django y Python para todos

Documentación!

Servidor HTTP de pruebas

ORM

URL dispatcher

Templates

Admin

Forms

Middleware y Signals

Internacionalizacion

Cache

Autenticación

Muchas aplicaciones “enchufables” disponibles

Page 38: Django y Python para todos

Modelo-Vista-Controlador

Page 39: Django y Python para todos

Modelo-Vista-Controlador

Page 40: Django y Python para todos

Django

Las rutas con objetos URLConf (urls.py) Relacionan expresiones regulares con vistas (funciones)

Se puede delegar una coincidencia a otro grupo de URLconfs

El despachador invoca a las vistas y ejecuta middlewares Se crea un objeto “request” que es pasado a la función (vista)

Este objeto request puede haber sido alterado por uno o más middlewares

Cuando la vista devuelve una respuesta también puede actuar el middleware

Page 41: Django y Python para todos

Django

Las vistas son funciones o métodos de clases, aunque es más raro: Reciben un objeto “request” que representa a la petición HTTP

Devuelve un objeto “response” que representa a la respuesta HTTP

Las redirecciones, mensajes de error: 403, 404, 500 son subclases

El manejo de sesiones es mediante cookies y via middleware

El objeto sesión se instancia y se coloca dentro del request

Django se comunica con el servidor web utilizando alguna de varias formas:

mod_python, mod_fastcgi, mod_wsgi, etc

Page 42: Django y Python para todos

Mapeador ORM

Page 43: Django y Python para todos

Mapeador ORM

Page 44: Django y Python para todos

Mapeador ORM

Page 45: Django y Python para todos

URLs y Vistas

El archivo urls.py actúa como puerta de entrada para las peticiones HTTP

Se definen URLs elegantes mediante expresiones regulares que redirigen a funciones de views.py

Cada expresión regular delega en una vista: Petición: http://dominio.com/fabricante/4

(r'^fabricante/(.*)/?$', 'dominio.app.views.ficha_fabr')

Page 46: Django y Python para todos

URLs y Vistas

La función de views.py recibe un objeto especial con la petición y todos los parámetros de la URL:

Page 47: Django y Python para todos

Sistema de Templates

Se centran exclusivamente en la visualización

Son ficheros .html con etiquetas especiales de Django:

Page 48: Django y Python para todos

Sistema de Templates

Ejemplo básico

Page 49: Django y Python para todos

Sistema de Templates

Page 50: Django y Python para todos

Sistema de Templates

Herencia de templates

Page 51: Django y Python para todos

Sistema de Templates

Herencia de templates

Page 52: Django y Python para todos

Sistema de Templates

Filtros

Permite trabajar con datos recibidos

Permite crear filtros propios http://bit.ly/2b6LjoO

Page 53: Django y Python para todos

Formularios

Facilitan enormemente la creación de formularios

Intervienen tres tipos de clases fundamentales:

Page 54: Django y Python para todos

Formularios

Creación de la clase formulario

Page 55: Django y Python para todos

Formularios

Programación de la vista asociada

Page 56: Django y Python para todos

Formularios

Inclusión en el template

Page 57: Django y Python para todos

Formularios

Formularios a partir de un modelo

Page 58: Django y Python para todos

Internacionalización

Ofrece integración con la librería GNU gettext de i18n

Page 59: Django y Python para todos

Internacionalización

¿Cómo indicar qué strings deben ser traducidos?

Gestión cómoda de singulares y plurales

Page 60: Django y Python para todos

django.contrib.auth

Page 61: Django y Python para todos

django.contrib.admin

Genera una aplicación ABM sobre un modelo de datos

Page 62: Django y Python para todos

django.contrib.admin

Page 63: Django y Python para todos

Experiencia de uso (Lo malo)

Muchos paquetes extras, no siempre usamos todos

Soporte a MSSQL comunitario, sin embargo es mejor que el driver de Microsoft

Algunos paquetes comunitarios no estan migrados a Python 3

Cuidado con los tipos de datos blob

No soporta stored procedure tan transparente como las view

Page 64: Django y Python para todos

Experiencia de uso (Lo Bueno)

Integración con software geomático (arcpy, pyQgis)

Integración con herramientas de análisis de datos como R y tiene sus propia librerías como numpy, matplotlib y pandas

Retrocompatibilidad y versiones LTS

Alta escalabilidad

Muchas apps plug and play para implementar en nuestros proyectos

Page 65: Django y Python para todos

Preguntas

Page 66: Django y Python para todos

Gracias

@micky_miseck

[email protected]