Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
01
Conozcamos Python
Python es un lenguaje de script de cdigo abierto y multiplataforma No necesitamos compilar nuestros programas Se puede descargar desde python.org ^ Mac OS X y Linux suelen venir con Python preinstalado Para utilizar el intrprete escribimos python en la consola y aparecer un promt as >>> para introducir comandos Los archivos de cdigo python tienen extensin .py 02
Conozcamos Python 2
Para ejecutar nuestros scripts usamos python mi_script.py Al ejecutar un script se traduce a un cdigo mquina intermedio generando archivos .pyc .pyo Python es fuertemente tipado pero tiene tipos dinmicos: Una variable puede cambiar de tipo en ejecucin pero el tipo se tiene en cuenta para las operaciones No hace falta declarar variables, es automtico al utilizarlas 03
Sintaxis de Python
Para definir bloques de cdigo NO se utilizan llaves { ... } como en otros lenguajes, los bloques de cdigo se definen mediante indentacin: 01. a = 2 02. if a + 3 == 5: 03. print a
04
Colecciones de datos
Listas [1, 2, 3, "Hola"] Tuplas Inmutables: (1, 2, 3, "Hola") Diccionarios Clave-valor: { "nombre":"Pedro", "edad":23 } Sets (colecciones de elementos nicos), etc. 06
Condicionales: Ejemplo
01. if a == b or c != 126: 02. 03. 05. mensaje = "Dentro del if" print mensaje print "Dentro del else"
07
Bucles: Ejemplo
01. lista = ["Ana", "Juan", "Marta"] 02. for nombre in lista: 03. print "Hola %s" % nombre Hola Ana Hola Juan Hola Marta 08
09
Funciones: Ejemplo
01. def saludar(persona): 02. 03. 04. 05. if persona == "Miquel": print "Vaya pelo! Cul es tu secreto?" else: print "Hola %s" % persona
10
Aprender Python
Tutorial python.org docs.python.org/tutorial/ ^ Dive into Python diveintopython.org ^ Python para todos mundogeek.net/tutorial-python/ ^ Lista de correo mail.python.org/mailman/listinfo/python-es ^ Reuniones Python-Madrid python-madrid.es ^
11
Qu es un framework?
Un framework es un paquete de software que sirve de base para otros proyectos de software. Provee una estructura y una metodologa de trabajo.
12
Qu es Django?
Django es un framework web de alto nivel escrito en Python que fomenta el desarrollo rpido y limpio y el diseo pragmtico. Sigue el principio DRY: Don't Repeat Yourself
13
Qu hace Django?
Provee una estructura de trabajo bajo el patrn Model Template View Mapea objetos Python con la base de datos (ORM) Permite disear URLs amigables para buscadores (til para SEO) Sistema de plantillas sencillo para diseadores Genera una interfaz de administracin automtica Puede gestionar formularios, sesiones de usuario, autenticacin, cach, almacenamiento, sitemaps, internacionalizacin, etc. 14
Patrn MTV
Separamos datos, interfaz de usuario y lgica de control:
Model modelo de datos (models.py) View vistas de datos (views.py): qu datos se presentan Template plantillas de pginas (generalmente archivos HTML): cmo se presentan los datos
15
Estructura de un proyecto
proyecto/
aplicacion 1/
aplicacion 2/
17
Crear un proyecto
Creamos nuestro proyecto y sus archivos iniciales con el comando: django-admin.py startproject mi_proyecto
18
19
20
22
Archivos de la aplicacin
__init__.py models.py contiene nuestros modelos de datos views.py contiene las vistas de la aplicacin tests.py permite que incluyamos tests para la aplicacin Es usual aadir un urls.py con las URLs de nuestra aplicacin e importarlas en el urls.py del proyecto
23
25
26
28
29
Qu incluye Django?
ORM (mapeador de objetos con la base de datos)
31
ORM de Django
ORM: Mapeador de objetos relacional Nos permite consultar la base de datos de forma sencilla a travs de nuestros modelos en Python Es sencillo y pontente Permite ejecutar cdigo SQL directamente para operaciones especialmente complejas Django permite utilizar otro ORM distinto como SQLAlchemy 32
Probando el ORM
01. # crear un autor 02. cervantes = Autor.objects.create(nombre='Cervantes') 03. 04. # crear un libro del autor 05. Libro.objects.create(titulo='Don Quijote', 06. 07. 33 resumen='bla bla', autor=cervantes)
Probando el ORM 2
01. # obtener todos los autores 02. Autor.objects.all() 03. 04. # obtener libros cuyo ttulo empieza por "Don" 05. Libro.objects.filter(titulo__startswith='Don')
34
Probando el ORM 3
01. # obtener los libros de Cervantes ordenados A-Z 02. autor = Autor.objects.get(nombre='Cervantes') 03. libros = autor.libros.order_by('titulo') 04. 05. # eliminar el autor 06. autor.delete()
35
Qu incluye Django?
ORM (mapeador de objetos con la base de datos) Lenguaje de plantillas
36
Lenguaje de plantillas
Es sencillo, orientado a diseadores que no saben programar Las plantillas pueden heredar unas de otras Se definen bloques (blocks) que pueden rellenar las plantillas hijas {{ variable }} {% if ... %} {% else %} {% endif %} {% for ... in ... %} {% empty %} {% enfor %}
37
Plantilla base.html
01. <html> 02. 03. 04. 05. 06. 07. <head> <title>{% block title %}{% endblock %}</title> </head> <body> {% block content %}{% endblock %} </body>
08. </html> 38
Plantilla hija.html
01. {% extends "base.html" %} 02. 03. {% block title %}Mi seccin{% endblock %} 04. 05. {% block content %} 06. <p> El contenido </p> 07. {% endblock %} 39
Qu incluye Django?
ORM (mapeador de objetos con la base de datos) Lenguaje de plantillas Sistema de administracin automtico
40
41
Qu incluye Django?
ORM (mapeador de objetos con la base de datos) Lenguaje de plantillas Sistema de administracin automtico Framework de formularios
42
Framework de formularios
Se definen con clases de Python. Notacin similar a los models Formularios generados dinmicamente a partir de nuestros modelos Django realiza la validacin en funcin del tipo de dato Proteccin contra CSRF automtica (Cross-site request forgery) Se pueden crear form wizards, formularios por pasos Se utilizan widgets para representar los campos: input, textarea, etc. o widgets complejos con HTML y javascript 43
Forms y ModelForms
01. class ContactForm(forms.Form): 02. 03. 04. 05. class LibroForm(forms.ModelForm): 06. 07. 44 class Meta: model = Libro email = forms.EmailField(label='E-mail') message = forms.CharField(widget=forms.Textarea)
Qu incluye Django?
ORM (mapeador de objetos con la base de datos) Lenguaje de plantillas Sistema de administracin automtico Framework de formularios Otros componentes de Django
46
48
Aprender Django
Tutorial oficial docs.djangoproject.com/en/dev/intro/tutorial01/ ^ Django book djangobook.com ^ Django docs docs.djangoproject.com ^ Blog de django.es django.es/blog/ ^ Lista de correo groups.google.com/group/django-users ^ Lista de correo espaol groups.google.com/group/django-es ^
49