SlideShare una empresa de Scribd logo
1 de 49
Descargar para leer sin conexión
Introducción a




01
Conozcamos Python

•   Python es un lenguaje de script de código 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 intérprete escribimos python en la consola y aparecerá
    un promt así >>> para introducir comandos

•   Los archivos de código python tienen extensión .py

    02
Conozcamos Python 2

•   Para ejecutar nuestros scripts usamos python mi_script.py

•   Al ejecutar un script se traduce a un código máquina intermedio
    generando archivos .pyc ó .pyo

•   Python es fuertemente tipado pero tiene tipos dinámicos:
    Una variable puede cambiar de tipo en ejecución pero el tipo se tiene en
    cuenta para las operaciones

•   No hace falta declarar variables, es automático al utilizarlas

    03
Sintaxis de Python

 •    Para definir bloques de código NO se utilizan llaves { ... } como en
      otros lenguajes, los bloques de código se definen mediante indentación:


01. a = 2
02. if a + 3 == 5:
03.        print a



      04
Tipos de datos comunes

•   string (también con soporte Unicode)

•   int

•   float

•   long (enteros largos)

•   complex (números complejos: parte real / parte imaginaria)

•   bool (booleanos)

•   file

    05
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.        mensaje = "Dentro del if"
03.        print mensaje
04. else:
05.        print "Dentro del else"
06. print "Fuera"



      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
Leer un fichero: Ejemplo

01. fichero = open("texto.txt")
02. for linea in fichero:
03.        print linea




      09
Funciones: Ejemplo

01. def saludar(persona):
02.        if persona == "Miquel":
03.            print "¡Vaya pelo! ¿Cuál es tu secreto?"
04.        else:
05.            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 metodología de
trabajo.




12
¿Qué es Django?

Django es un framework web de alto nivel escrito en Python que
fomenta el desarrollo rápido y limpio y el diseño pragmático.


Sigue el principio DRY: Don't Repeat Yourself




13
¿Qué hace Django?

•   Provee una estructura de trabajo bajo el patrón Model Template View

•   Mapea objetos Python con la base de datos (ORM)

•   Permite diseñar URLs amigables para buscadores (útil para SEO)

•   Sistema de plantillas sencillo para diseñadores

•   Genera una interfaz de administración automática

•   Puede gestionar formularios, sesiones de usuario, autenticación, caché,
    almacenamiento, sitemaps, internacionalización, etc.

    14
Patrón MTV

    Separamos datos, interfaz de usuario y lógica de control:


•   Model → modelo de datos (models.py)

•   View →vistas de datos (views.py): qué datos se presentan

•   Template → plantillas de páginas (generalmente archivos HTML):
    cómo se presentan los datos



    15
Organización de un proyecto Django

•   Un desarrollo es un Proyecto

•   Un proyecto consta de una o varias aplicaciones

•   Cada aplicación hace algo en concreto

•   Proyecto "Comunidad web" Aplicaciones: blog, foro, registro de usuarios,
    tienda on-line, newsletter, agregador de feeds...

•   Una aplicación puede ser utilizada por distintos proyectos a la vez

•   Un proyecto puede hacer funcionar varios sitios web

    16
Estructura de un proyecto

•   proyecto/

    •   aplicacion 1/

        •   models.py

        •   views.py

        •   urls.py

        •   templates/

    •   aplicacion 2/

    17
       •    ...
Crear un proyecto

Creamos nuestro proyecto y sus archivos iniciales con el comando:


django-admin.py startproject mi_proyecto




18
Ejecutar el servidor de desarrollo

Desde la ruta de nuestro proyecto ejecutamos el servidor de desarrollo
con el comando:


python manage.py runserver


Abrimos http://127.0.0.1:8000/



19
Abrimos el navegador y...




20
Archivos del proyecto

•   __init__.py indica a Python que el directorio sea interpretado como un
    paquete de Python

•   settings.py contiene la configuración de la aplicación (conex. a bases de
    datos, aplicaciones instaladas, etc.)

•   manage.py nos permite ejecutar comandos de django sobre el proyecto
    (p ej. para crear nuevas aplicaciones)

•   urls.py contiene las URLs del proyecto

    21
Crear una aplicación

Dentro de la ruta de nuestro proyecto utilizamos manage.py para crear
aplicaciones:


python manage.py startapp biblioteca




22
Archivos de la aplicación

•   __init__.py

•   models.py contiene nuestros modelos de datos

•   views.py contiene las vistas de la aplicación

•   tests.py permite que incluyamos tests para la aplicación

•   Es usual añadir un urls.py con las URLs de nuestra aplicación e
    importarlas en el urls.py del proyecto



    23
Models: modelos de datos

01. class Autor(models.Model):
02.        nombre = models.CharField(max_length=150)
03.
04. class Libro(models.Model):
05.        autor = models.ForeignKey(Autor, related_name='libros')
06.        titulo = models.CharField(max_length=150)
07.        resumen = models.TextField(blank=True)

      24
Crear la estructura SQL automáticamente

Con un comando creamos toda la estructura de la base de datos a partir
de nuestros modelos:


python manage.py syncdb


Django soporta por defecto MySQL, PostgreSQL, SQLite3, y Oracle.



25
Views: Vistas de la aplicación

01. def autor_detail(request, id):
02.        autor = get_object_or_404(Autor, id=id)
03.        return render_to_response('autor.html', { 'autor':autor }




      26
Templates: Plantilla HTML

01. <html>
02.        <head><title>{{ autor.nombre }}</title></head>
03.        <body>
04.          {% for libro in autor.libros.all %}
05.                 <h2>{{ libro.titulo }}</h2>
06.                 <p>{{ libro.resumen }}</p>
07.          {% endfor %}
08.        </body> </html>
      27
Urls: URL para nuestra vista

      Utilizamos expresiones regulares para las URLs:


01. urlpatterns = patterns('',
02.        # ...
03.        url(r'^autor/(?P<id>d+)/$', autor_detail, name='autor'),
04. )



      28
Funcionamiento de las peticiones HTTP

1. El usuario pide una URL (por GET ó POST)
2. Django busca la primera URL que coincida con la solicitada (urls.py)
3. Se ejecuta la vista (función) a la que apunta esa URL (views.py)
4. En la vista se utilizan los models (modelos de datos) para consultar la BD
5. Los datos resultantes se introducen en la plantilla (templates)
6. Se devuleve una respuesta HTTP con el HTML generado



   29
Con nuestro ejemplo

1. El navegador solicita la URL http://www.miweb.com/autor/33/
2. Django busca una coincidencia en urls.py
    ^autor/(?P<id>d+)/$ coincide con /autor/33/
3. Se ejecuta la vista a la que apunta esa URL: autor_detail(id=33)
4. En la vista se consulta a la BD para obtener el Autor con id 33
5. La vista pasa el objeto Autor devuelto a la plantilla autor.html
6. Django procesa la plantilla y devuleve el HTML generado al navegador

   30
¿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 través de
    nuestros modelos en Python

•   Es sencillo y pontente

•   Permite ejecutar código 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.                     resumen='bla bla',
07.                     autor=cervantes)

      33
Probando el ORM 2

01. # obtener todos los autores
02. Autor.objects.all()
03.
04. # obtener libros cuyo título 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 diseñadores 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.     <head>
03.        <title>{% block title %}{% endblock %}</title>
04.     </head>
05.     <body>
06.        {% block content %}{% endblock %}
07.     </body>
08. </html>
    38
Plantilla hija.html

01. {% extends "base.html" %}
02.
03. {% block title %}Mi sección{% 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 administración automático




    40
Sistema de administración automático




41
¿Qué incluye Django?

•   ORM (mapeador de objetos con la base de datos)

•   Lenguaje de plantillas

•   Sistema de administración automático

•   Framework de formularios




    42
Framework de formularios

•   Se definen con clases de Python. Notación similar a los models

•   Formularios generados dinámicamente a partir de nuestros modelos

•   Django realiza la validación en función del tipo de dato

•   Protección contra CSRF automática (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.        email = forms.EmailField(label='E-mail')
03.        message = forms.CharField(widget=forms.Textarea)
04.
05. class LibroForm(forms.ModelForm):
06.        class Meta:
07.           model = Libro

      44
Vista con validación de formulario

01. def contacto(request):
02.         if request.method == 'POST':
03.                form = ContactForm(request.POST)
04.                if form.is_valid():
05.                    return HttpResponseRedirect('/gracias/')
06.        else:
07.                form = ContactForm()
08.        return render_to_response('contacto.html', {'form':form })
      45
¿Qué incluye Django?

•   ORM (mapeador de objetos con la base de datos)

•   Lenguaje de plantillas

•   Sistema de administración automático

•   Framework de formularios

•   Otros componentes de Django




    46
Otros componentes de Django

•   Vistas genéricas: CRUD, listados con paginación, etc.

•   Autenticación y sesiones de usuario

•   Internacionalización y localización

•   Sistemas de cache (memcached, etc.)

•   Backends de almacenamiento de datos

•   Generación de sitemaps

•   Generación de feeds

    47
Quién usa Django

•   Google en su AppEngine

•   Nasa

•   New York Times

•   Washington Post

•   VMWare




    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 español groups.google.com/group/django-es ^



    49

Más contenido relacionado

La actualidad más candente

Iniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLIniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLRightster
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRJuan Belón Pérez
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con DockerErnesto Crespo
 
Extracción de datos de páginas web con Python (webscraping)
Extracción de datos de páginas web con Python (webscraping)Extracción de datos de páginas web con Python (webscraping)
Extracción de datos de páginas web con Python (webscraping)Ernesto Crespo
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosRightster
 
Masterclass PHP 5.3
Masterclass PHP 5.3Masterclass PHP 5.3
Masterclass PHP 5.3ADWE Team
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2Mario IC
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyJuan Eladio Sánchez Rosas
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008guest02b440
 
Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosRightster
 
Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Jesús Ayús
 
Programacion Orientada a Objetos en php
Programacion Orientada a Objetos en phpProgramacion Orientada a Objetos en php
Programacion Orientada a Objetos en phpSamuel Piñon Garcia
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con PythonManuel Pérez
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoRightster
 

La actualidad más candente (19)

Iniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQLIniciación PHP 5. PHP y MySQL
Iniciación PHP 5. PHP y MySQL
 
Introducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGRIntroducción a PHP - Programador PHP - UGR
Introducción a PHP - Programador PHP - UGR
 
Usando Django con Docker
Usando Django con DockerUsando Django con Docker
Usando Django con Docker
 
Extracción de datos de páginas web con Python (webscraping)
Extracción de datos de páginas web con Python (webscraping)Extracción de datos de páginas web con Python (webscraping)
Extracción de datos de páginas web con Python (webscraping)
 
Django
DjangoDjango
Django
 
Iniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a ObjetosIniciación PHP 5. Programación Orientada a Objetos
Iniciación PHP 5. Programación Orientada a Objetos
 
Curso Php
Curso PhpCurso Php
Curso Php
 
Masterclass PHP 5.3
Masterclass PHP 5.3Masterclass PHP 5.3
Masterclass PHP 5.3
 
Taller introduccion symfony2
Taller introduccion symfony2Taller introduccion symfony2
Taller introduccion symfony2
 
Php Con Postgres
Php Con PostgresPhp Con Postgres
Php Con Postgres
 
Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP Composer: Gestionando dependencias en PHP
Composer: Gestionando dependencias en PHP
 
Desarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfonyDesarrollo de aplicaciones web con PHP y symfony
Desarrollo de aplicaciones web con PHP y symfony
 
San Luis Oct 2008
San Luis Oct 2008San Luis Oct 2008
San Luis Oct 2008
 
Iniciación PHP 5. Ejercicios
Iniciación PHP 5. EjerciciosIniciación PHP 5. Ejercicios
Iniciación PHP 5. Ejercicios
 
Introducción a recaptcha 3.0
Introducción a recaptcha 3.0Introducción a recaptcha 3.0
Introducción a recaptcha 3.0
 
Programacion Orientada a Objetos en php
Programacion Orientada a Objetos en phpProgramacion Orientada a Objetos en php
Programacion Orientada a Objetos en php
 
Servicios web con Python
Servicios web con PythonServicios web con Python
Servicios web con Python
 
Php basico
Php basicoPhp basico
Php basico
 
PHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseñoPHP Avanzado: Patrones de diseño
PHP Avanzado: Patrones de diseño
 

Destacado

Django on Jython Summer of Code Results
Django on Jython Summer of Code ResultsDjango on Jython Summer of Code Results
Django on Jython Summer of Code ResultsLeonardo Soto
 
Instlacion De Sistema Operativo
Instlacion De Sistema OperativoInstlacion De Sistema Operativo
Instlacion De Sistema Operativoluznocturna
 
Instlacion Komodo IDE
Instlacion Komodo IDEInstlacion Komodo IDE
Instlacion Komodo IDEanglela97
 
Instlacion komodo
Instlacion komodoInstlacion komodo
Instlacion komodoanglela97
 
Instlacion de windows
Instlacion de windowsInstlacion de windows
Instlacion de windowsTania Mayte
 
SAMP (OpenSolaris + Apache + MySQL + PHP / Python / Perl / Drupal / Django)
SAMP (OpenSolaris + Apache + MySQL + PHP / Python / Perl / Drupal / Django)SAMP (OpenSolaris + Apache + MySQL + PHP / Python / Perl / Drupal / Django)
SAMP (OpenSolaris + Apache + MySQL + PHP / Python / Perl / Drupal / Django)juandanielp
 
Primera_Aplicación_Python_Django_Postgresql_Fedora_19
Primera_Aplicación_Python_Django_Postgresql_Fedora_19Primera_Aplicación_Python_Django_Postgresql_Fedora_19
Primera_Aplicación_Python_Django_Postgresql_Fedora_19Stalin Eduardo Tusa Vitar
 
Intro Python
Intro PythonIntro Python
Intro Pythonctme
 
¿Porqué Python? ...y Django
¿Porqué Python? ...y Django¿Porqué Python? ...y Django
¿Porqué Python? ...y DjangoAntonio Ognio
 
diapositiva de slide share
diapositiva de slide sharediapositiva de slide share
diapositiva de slide sharecesar
 
Presentacion maletas viajeras movimiento
Presentacion maletas viajeras movimientoPresentacion maletas viajeras movimiento
Presentacion maletas viajeras movimientobibliotecaita
 
Historia y evolución de la pc wil,stefa y harry
Historia y evolución de la pc wil,stefa y harryHistoria y evolución de la pc wil,stefa y harry
Historia y evolución de la pc wil,stefa y harrytefadianis
 
Tipos de consulta en access
Tipos de consulta en accessTipos de consulta en access
Tipos de consulta en accessMaYra Alejandra
 

Destacado (20)

Proyecto ahd 01 píoxii
Proyecto ahd 01 píoxiiProyecto ahd 01 píoxii
Proyecto ahd 01 píoxii
 
Django on Jython Summer of Code Results
Django on Jython Summer of Code ResultsDjango on Jython Summer of Code Results
Django on Jython Summer of Code Results
 
Instlacion De Sistema Operativo
Instlacion De Sistema OperativoInstlacion De Sistema Operativo
Instlacion De Sistema Operativo
 
Instlacion Komodo IDE
Instlacion Komodo IDEInstlacion Komodo IDE
Instlacion Komodo IDE
 
Instlacion komodo
Instlacion komodoInstlacion komodo
Instlacion komodo
 
Presentación1.maestria.unefa.
Presentación1.maestria.unefa.Presentación1.maestria.unefa.
Presentación1.maestria.unefa.
 
Instlacion de windows
Instlacion de windowsInstlacion de windows
Instlacion de windows
 
Python y Django
Python y DjangoPython y Django
Python y Django
 
SAMP (OpenSolaris + Apache + MySQL + PHP / Python / Perl / Drupal / Django)
SAMP (OpenSolaris + Apache + MySQL + PHP / Python / Perl / Drupal / Django)SAMP (OpenSolaris + Apache + MySQL + PHP / Python / Perl / Drupal / Django)
SAMP (OpenSolaris + Apache + MySQL + PHP / Python / Perl / Drupal / Django)
 
Primera_Aplicación_Python_Django_Postgresql_Fedora_19
Primera_Aplicación_Python_Django_Postgresql_Fedora_19Primera_Aplicación_Python_Django_Postgresql_Fedora_19
Primera_Aplicación_Python_Django_Postgresql_Fedora_19
 
Programador Jr. para Python Primera Parte
Programador Jr. para Python Primera ParteProgramador Jr. para Python Primera Parte
Programador Jr. para Python Primera Parte
 
Intro Python
Intro PythonIntro Python
Intro Python
 
¿Porqué Python? ...y Django
¿Porqué Python? ...y Django¿Porqué Python? ...y Django
¿Porqué Python? ...y Django
 
diapositiva de slide share
diapositiva de slide sharediapositiva de slide share
diapositiva de slide share
 
Presentacion maletas viajeras movimiento
Presentacion maletas viajeras movimientoPresentacion maletas viajeras movimiento
Presentacion maletas viajeras movimiento
 
Guia de consejos
Guia de consejosGuia de consejos
Guia de consejos
 
Historia y evolución de la pc wil,stefa y harry
Historia y evolución de la pc wil,stefa y harryHistoria y evolución de la pc wil,stefa y harry
Historia y evolución de la pc wil,stefa y harry
 
O libro da_amizade
O libro da_amizadeO libro da_amizade
O libro da_amizade
 
Repsol & YPF
Repsol & YPFRepsol & YPF
Repsol & YPF
 
Tipos de consulta en access
Tipos de consulta en accessTipos de consulta en access
Tipos de consulta en access
 

Similar a Introducción a Python: optimizados para

Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosGeorge Navarro Gomez
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendmenttes
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeersbetabeers
 
Mallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBMallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBEmilio Torrens
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corporacion de Industrias Tecnologicas S.A.
 
Documentacion Proyecto Final
Documentacion Proyecto FinalDocumentacion Proyecto Final
Documentacion Proyecto FinalMoisesAlvarez38
 
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...SolidQ
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a DjangoJoaquim Rocha
 
CLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptxCLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptxDiseoGrfico14
 
04 taller-django
04 taller-django04 taller-django
04 taller-djangosamerscd
 
GitHub Actions Monkeyconf 2021.pptx
GitHub Actions Monkeyconf 2021.pptxGitHub Actions Monkeyconf 2021.pptx
GitHub Actions Monkeyconf 2021.pptxicebeam7
 
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018nacho mascort
 

Similar a Introducción a Python: optimizados para (20)

Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
Django
DjangoDjango
Django
 
Django - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales ConceptosDjango - Curso Básico - Principales Conceptos
Django - Curso Básico - Principales Conceptos
 
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontendCombinación ganadora: Plone como CMS, tu framework preferido como frontend
Combinación ganadora: Plone como CMS, tu framework preferido como frontend
 
Welcome to Django
Welcome to DjangoWelcome to Django
Welcome to Django
 
Taller de Django betabeers
Taller de Django betabeersTaller de Django betabeers
Taller de Django betabeers
 
Dia2
Dia2Dia2
Dia2
 
Mallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDBMallorca MUG: Introducción a MongoDB
Mallorca MUG: Introducción a MongoDB
 
Angular Fundamentals
Angular FundamentalsAngular Fundamentals
Angular Fundamentals
 
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
Corp. In. Tec. S.A. - Capacitaciones en Informática - Programación con CodeIg...
 
Documentacion Proyecto Final
Documentacion Proyecto FinalDocumentacion Proyecto Final
Documentacion Proyecto Final
 
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
La guía para sacarle provecho a tu proyecto de BBDD con Visual Studio - Solid...
 
Introducción a Django
Introducción a DjangoIntroducción a Django
Introducción a Django
 
CLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptxCLASE03_TEMA02_2.pptx
CLASE03_TEMA02_2.pptx
 
S14-DAW-2022S1.pptx
S14-DAW-2022S1.pptxS14-DAW-2022S1.pptx
S14-DAW-2022S1.pptx
 
04 taller-django
04 taller-django04 taller-django
04 taller-django
 
GitHub Actions Monkeyconf 2021.pptx
GitHub Actions Monkeyconf 2021.pptxGitHub Actions Monkeyconf 2021.pptx
GitHub Actions Monkeyconf 2021.pptx
 
Frameworks de templates y xml
Frameworks de templates y xmlFrameworks de templates y xml
Frameworks de templates y xml
 
¡This is drupal!
¡This is drupal!¡This is drupal!
¡This is drupal!
 
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
Scraping avanzado o Cómo hacer de internet tu base de datos #seoplus2018
 

Más de betabeers

IONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformaIONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformabetabeers
 
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)betabeers
 
Blockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar LageBlockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar Lagebetabeers
 
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica MediavillaCloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica Mediavillabetabeers
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilónbetabeers
 
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito -  Jon Torrado - Betabeers BilbaoLa línea recta hacia el éxito -  Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbaobetabeers
 
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu appbetabeers
 
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)betabeers
 
Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)betabeers
 
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)betabeers
 
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)betabeers
 
Elemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de UsoElemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de Usobetabeers
 
Seguridad en tu startup
Seguridad en tu startupSeguridad en tu startup
Seguridad en tu startupbetabeers
 
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.betabeers
 
Buenas prácticas para la optimización web
Buenas prácticas para la optimización webBuenas prácticas para la optimización web
Buenas prácticas para la optimización webbetabeers
 
La magia de Scrum
La magia de ScrumLa magia de Scrum
La magia de Scrumbetabeers
 
Programador++ por @wottam
Programador++ por @wottamProgramador++ por @wottam
Programador++ por @wottambetabeers
 
RaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoTRaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoTbetabeers
 
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015betabeers
 
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015betabeers
 

Más de betabeers (20)

IONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataformaIONIC, el framework para crear aplicaciones híbridas multiplataforma
IONIC, el framework para crear aplicaciones híbridas multiplataforma
 
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
Servicios de Gestión de Datos en la Nube - Jaime Balañá (NetApp)
 
Blockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar LageBlockchain: la revolución industrial de internet - Oscar Lage
Blockchain: la revolución industrial de internet - Oscar Lage
 
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica MediavillaCloud Learning: la formación del siglo XXI - Mónica Mediavilla
Cloud Learning: la formación del siglo XXI - Mónica Mediavilla
 
Desarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo QuilónDesarrollo web en Nodejs con Pillars por Chelo Quilón
Desarrollo web en Nodejs con Pillars por Chelo Quilón
 
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito -  Jon Torrado - Betabeers BilbaoLa línea recta hacia el éxito -  Jon Torrado - Betabeers Bilbao
La línea recta hacia el éxito - Jon Torrado - Betabeers Bilbao
 
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
6 errores a evitar si eres una startup móvil y quieres evolucionar tu app
 
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
Dev ops.continuous delivery - Ibon Landa (Plain Concepts)
 
Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)Introducción a scrum - Rodrigo Corral (Plain Concepts)
Introducción a scrum - Rodrigo Corral (Plain Concepts)
 
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
Gestión de proyectos y consorcios internacionales - Iñigo Cañadas (GFI)
 
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
Software de gestión Open Source - Odoo - Bakartxo Aristegi (Aizean)
 
Elemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de UsoElemental, querido Watson - Caso de Uso
Elemental, querido Watson - Caso de Uso
 
Seguridad en tu startup
Seguridad en tu startupSeguridad en tu startup
Seguridad en tu startup
 
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
Spark Java: Aplicaciones web ligeras y rápidas con Java, por Fran Paredes.
 
Buenas prácticas para la optimización web
Buenas prácticas para la optimización webBuenas prácticas para la optimización web
Buenas prácticas para la optimización web
 
La magia de Scrum
La magia de ScrumLa magia de Scrum
La magia de Scrum
 
Programador++ por @wottam
Programador++ por @wottamProgramador++ por @wottam
Programador++ por @wottam
 
RaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoTRaspberryPi: Tu dispositivo para IoT
RaspberryPi: Tu dispositivo para IoT
 
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015 Introducción al Big Data - Xabier Tranche  - VIII Betabeers Bilbao 27/02/2015
Introducción al Big Data - Xabier Tranche - VIII Betabeers Bilbao 27/02/2015
 
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
PAYTPV Plataforma Integral de Cobros - VIII Betabeers Bilbao 27/02/2015
 

Introducción a Python: optimizados para

  • 2. Conozcamos Python • Python es un lenguaje de script de código 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 intérprete escribimos python en la consola y aparecerá un promt así >>> para introducir comandos • Los archivos de código python tienen extensión .py 02
  • 3. Conozcamos Python 2 • Para ejecutar nuestros scripts usamos python mi_script.py • Al ejecutar un script se traduce a un código máquina intermedio generando archivos .pyc ó .pyo • Python es fuertemente tipado pero tiene tipos dinámicos: Una variable puede cambiar de tipo en ejecución pero el tipo se tiene en cuenta para las operaciones • No hace falta declarar variables, es automático al utilizarlas 03
  • 4. Sintaxis de Python • Para definir bloques de código NO se utilizan llaves { ... } como en otros lenguajes, los bloques de código se definen mediante indentación: 01. a = 2 02. if a + 3 == 5: 03. print a 04
  • 5. Tipos de datos comunes • string (también con soporte Unicode) • int • float • long (enteros largos) • complex (números complejos: parte real / parte imaginaria) • bool (booleanos) • file 05
  • 6. 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
  • 7. Condicionales: Ejemplo 01. if a == b or c != 126: 02. mensaje = "Dentro del if" 03. print mensaje 04. else: 05. print "Dentro del else" 06. print "Fuera" 07
  • 8. Bucles: Ejemplo 01. lista = ["Ana", "Juan", "Marta"] 02. for nombre in lista: 03. print "Hola %s" % nombre Hola Ana Hola Juan Hola Marta 08
  • 9. Leer un fichero: Ejemplo 01. fichero = open("texto.txt") 02. for linea in fichero: 03. print linea 09
  • 10. Funciones: Ejemplo 01. def saludar(persona): 02. if persona == "Miquel": 03. print "¡Vaya pelo! ¿Cuál es tu secreto?" 04. else: 05. print "Hola %s" % persona 10
  • 11. 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
  • 12. ¿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 metodología de trabajo. 12
  • 13. ¿Qué es Django? Django es un framework web de alto nivel escrito en Python que fomenta el desarrollo rápido y limpio y el diseño pragmático. Sigue el principio DRY: Don't Repeat Yourself 13
  • 14. ¿Qué hace Django? • Provee una estructura de trabajo bajo el patrón Model Template View • Mapea objetos Python con la base de datos (ORM) • Permite diseñar URLs amigables para buscadores (útil para SEO) • Sistema de plantillas sencillo para diseñadores • Genera una interfaz de administración automática • Puede gestionar formularios, sesiones de usuario, autenticación, caché, almacenamiento, sitemaps, internacionalización, etc. 14
  • 15. Patrón MTV Separamos datos, interfaz de usuario y lógica de control: • Model → modelo de datos (models.py) • View →vistas de datos (views.py): qué datos se presentan • Template → plantillas de páginas (generalmente archivos HTML): cómo se presentan los datos 15
  • 16. Organización de un proyecto Django • Un desarrollo es un Proyecto • Un proyecto consta de una o varias aplicaciones • Cada aplicación hace algo en concreto • Proyecto "Comunidad web" Aplicaciones: blog, foro, registro de usuarios, tienda on-line, newsletter, agregador de feeds... • Una aplicación puede ser utilizada por distintos proyectos a la vez • Un proyecto puede hacer funcionar varios sitios web 16
  • 17. Estructura de un proyecto • proyecto/ • aplicacion 1/ • models.py • views.py • urls.py • templates/ • aplicacion 2/ 17 • ...
  • 18. Crear un proyecto Creamos nuestro proyecto y sus archivos iniciales con el comando: django-admin.py startproject mi_proyecto 18
  • 19. Ejecutar el servidor de desarrollo Desde la ruta de nuestro proyecto ejecutamos el servidor de desarrollo con el comando: python manage.py runserver Abrimos http://127.0.0.1:8000/ 19
  • 21. Archivos del proyecto • __init__.py indica a Python que el directorio sea interpretado como un paquete de Python • settings.py contiene la configuración de la aplicación (conex. a bases de datos, aplicaciones instaladas, etc.) • manage.py nos permite ejecutar comandos de django sobre el proyecto (p ej. para crear nuevas aplicaciones) • urls.py contiene las URLs del proyecto 21
  • 22. Crear una aplicación Dentro de la ruta de nuestro proyecto utilizamos manage.py para crear aplicaciones: python manage.py startapp biblioteca 22
  • 23. Archivos de la aplicación • __init__.py • models.py contiene nuestros modelos de datos • views.py contiene las vistas de la aplicación • tests.py permite que incluyamos tests para la aplicación • Es usual añadir un urls.py con las URLs de nuestra aplicación e importarlas en el urls.py del proyecto 23
  • 24. Models: modelos de datos 01. class Autor(models.Model): 02. nombre = models.CharField(max_length=150) 03. 04. class Libro(models.Model): 05. autor = models.ForeignKey(Autor, related_name='libros') 06. titulo = models.CharField(max_length=150) 07. resumen = models.TextField(blank=True) 24
  • 25. Crear la estructura SQL automáticamente Con un comando creamos toda la estructura de la base de datos a partir de nuestros modelos: python manage.py syncdb Django soporta por defecto MySQL, PostgreSQL, SQLite3, y Oracle. 25
  • 26. Views: Vistas de la aplicación 01. def autor_detail(request, id): 02. autor = get_object_or_404(Autor, id=id) 03. return render_to_response('autor.html', { 'autor':autor } 26
  • 27. Templates: Plantilla HTML 01. <html> 02. <head><title>{{ autor.nombre }}</title></head> 03. <body> 04. {% for libro in autor.libros.all %} 05. <h2>{{ libro.titulo }}</h2> 06. <p>{{ libro.resumen }}</p> 07. {% endfor %} 08. </body> </html> 27
  • 28. Urls: URL para nuestra vista Utilizamos expresiones regulares para las URLs: 01. urlpatterns = patterns('', 02. # ... 03. url(r'^autor/(?P<id>d+)/$', autor_detail, name='autor'), 04. ) 28
  • 29. Funcionamiento de las peticiones HTTP 1. El usuario pide una URL (por GET ó POST) 2. Django busca la primera URL que coincida con la solicitada (urls.py) 3. Se ejecuta la vista (función) a la que apunta esa URL (views.py) 4. En la vista se utilizan los models (modelos de datos) para consultar la BD 5. Los datos resultantes se introducen en la plantilla (templates) 6. Se devuleve una respuesta HTTP con el HTML generado 29
  • 30. Con nuestro ejemplo 1. El navegador solicita la URL http://www.miweb.com/autor/33/ 2. Django busca una coincidencia en urls.py ^autor/(?P<id>d+)/$ coincide con /autor/33/ 3. Se ejecuta la vista a la que apunta esa URL: autor_detail(id=33) 4. En la vista se consulta a la BD para obtener el Autor con id 33 5. La vista pasa el objeto Autor devuelto a la plantilla autor.html 6. Django procesa la plantilla y devuleve el HTML generado al navegador 30
  • 31. ¿Qué incluye Django? • ORM (mapeador de objetos con la base de datos) 31
  • 32. ORM de Django • ORM: Mapeador de objetos relacional • Nos permite consultar la base de datos de forma sencilla a través de nuestros modelos en Python • Es sencillo y pontente • Permite ejecutar código SQL directamente para operaciones especialmente complejas • Django permite utilizar otro ORM distinto como SQLAlchemy 32
  • 33. 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. resumen='bla bla', 07. autor=cervantes) 33
  • 34. Probando el ORM 2 01. # obtener todos los autores 02. Autor.objects.all() 03. 04. # obtener libros cuyo título empieza por "Don" 05. Libro.objects.filter(titulo__startswith='Don') 34
  • 35. 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
  • 36. ¿Qué incluye Django? • ORM (mapeador de objetos con la base de datos) • Lenguaje de plantillas 36
  • 37. Lenguaje de plantillas • Es sencillo, orientado a diseñadores 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
  • 38. Plantilla base.html 01. <html> 02. <head> 03. <title>{% block title %}{% endblock %}</title> 04. </head> 05. <body> 06. {% block content %}{% endblock %} 07. </body> 08. </html> 38
  • 39. Plantilla hija.html 01. {% extends "base.html" %} 02. 03. {% block title %}Mi sección{% endblock %} 04. 05. {% block content %} 06. <p> El contenido </p> 07. {% endblock %} 39
  • 40. ¿Qué incluye Django? • ORM (mapeador de objetos con la base de datos) • Lenguaje de plantillas • Sistema de administración automático 40
  • 41. Sistema de administración automático 41
  • 42. ¿Qué incluye Django? • ORM (mapeador de objetos con la base de datos) • Lenguaje de plantillas • Sistema de administración automático • Framework de formularios 42
  • 43. Framework de formularios • Se definen con clases de Python. Notación similar a los models • Formularios generados dinámicamente a partir de nuestros modelos • Django realiza la validación en función del tipo de dato • Protección contra CSRF automática (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
  • 44. Forms y ModelForms 01. class ContactForm(forms.Form): 02. email = forms.EmailField(label='E-mail') 03. message = forms.CharField(widget=forms.Textarea) 04. 05. class LibroForm(forms.ModelForm): 06. class Meta: 07. model = Libro 44
  • 45. Vista con validación de formulario 01. def contacto(request): 02. if request.method == 'POST': 03. form = ContactForm(request.POST) 04. if form.is_valid(): 05. return HttpResponseRedirect('/gracias/') 06. else: 07. form = ContactForm() 08. return render_to_response('contacto.html', {'form':form }) 45
  • 46. ¿Qué incluye Django? • ORM (mapeador de objetos con la base de datos) • Lenguaje de plantillas • Sistema de administración automático • Framework de formularios • Otros componentes de Django 46
  • 47. Otros componentes de Django • Vistas genéricas: CRUD, listados con paginación, etc. • Autenticación y sesiones de usuario • Internacionalización y localización • Sistemas de cache (memcached, etc.) • Backends de almacenamiento de datos • Generación de sitemaps • Generación de feeds 47
  • 48. Quién usa Django • Google en su AppEngine • Nasa • New York Times • Washington Post • VMWare 48
  • 49. 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 español groups.google.com/group/django-es ^ 49