Django & Google App
Engine
Una combinación perfecta para desarrollar
portales web sofisticados y escalables
Dr. Diego Lz. de Ipiña Gz. de Artaza
http://paginaspersonales.deusto.es/dipina
Bizkaia Enpresa Digitala, Parque Tecnológico de Zamudio.
Edificio ESI, #204, 9 Febrero 2009, 9am-2pm
[email protected]
1
Contenidos
1.
Introducción (30 ').
¿Qué es Django?
¿Quién lo utiliza?
Componentes de Django.
El lenguaje Python.
2. Primera aplicación en Django (60')
Instalación de Django: lenguaje, framework, base de datos
Creación de un proyecto
Configuración de un proyecto
Creación del Modelo de Datos
Generación de la Interfaz Administrativa
Creación de la interfaz pública (vistas) de una aplicación
Configuración de la capa de control (URLConf)
2
1
Contenidos
3. Creando aplicaciones Django más sofisticadas (50').
El sistema de plantillas de Django
Gestión de formularios en Django
Gestión de sesiones y usuarios
Vistas genéricas
Descanso (15')
4. Aspectos Avanzados (40').
Mejora de rendimiento a través de cachés
Despliegue de aplicaciones Django en Apache
Uso de motores de bases de datos más escalables (MySQL)
Soporte de AJAX
Contenidos
5. Google App Engine (90').
¿Qué es Google App Engine?
Instalación de Google App Engine SDK
Desarrollo de nuestra primera aplicación
La framework webapp
Uso de APIs de Google
Integrando Django y Google App Engine
Registrando la aplicación
6. Conclusión y Preguntas (15').
3
4
2
¿Qué es Django?
Django es una framework web en Python de alto nivel
que permite un desarrollo rápido y un diseño limpio y
pragmático.
Su objetivo principal es facilitar la creación de webs
complejas apoyadas en bases de datos.
Diseñado por “The World Company” con 2 objetivos:
Los estrechos límites temporales de una sala de noticias
Los requisitos impuestos por los propios desarrolladores web.
Diseñada para que el desarrollador se concentre en la
lógica de negocio y olvide detalles rutinarios
Django automatiza todo lo posible adhiriéndose al
principio DRY (Don’t Repeat Yourself)
Permite escribir aplicaciones elegantes de alto
rendimiento y de manera rápida
5
¿Por qué se llama Django?
Jean “Django” Reinhardt
Famoso guitarrista de
Jazz belga romaní
http://en.wikipedia.org/wiki
/Django_Reinhardt
Ejemplo de su música en:
http://www.youtube.com/w
atch?v=AEzsPGHsi90
6
3
Características Django
Sigue el patrón de diseño modelo/vista/controlador o
MVC
Enfatiza la reusabilidad y extensibilidad, el rápido
desarrollo y el principio DRY (Don't Repeat Yourself)
Provee abstracciones de alto nivel basadas en patrones
de diseño web comunes
Incluye una interfaz administrativa CRUD (CREATE,
READ, UPDATE y DELETE) generada dinámicamente a
partir del modelo de datos
Basado en Python
7
Componentes esenciales
Django
1. Un mapeador objeto-relacional que media entre los
modelos de datos (definidos como clases Python) y una
base de datos relacional
2. Un gestor de peticiones web basado en expresiones
regulares que procesan las URLs entrantes
3. Un sistema de vistas para procesar las peticiones
entrantes y
4. Un sistema de plantillado (templates) que asiste en
la visualización de respuestas a las peticiones entrantes.
8
4
Otros componentes de Django
Un servidor web ligero para desarrollo y prueba de aplicaciones.
Un sistema de serialización y validación de formularios.
Una framework de cacheo que puede hacer uso de varios métodos de cacheo.
Soporte para clases middleware que intervienen en diferentes etapas del
procesamiento de una petición y pueden realizan lógica de propósito especial.
Un sistema de internacionalización que permite el uso de diferentes idiomas y
codificaciones de caracteres
(http://docs.djangoproject.com/en/dev/topics/i18n/?from=olddocs )
Un modelo de serialización que permite producir y leer XML y representaciones JSON
de instancias de modelos de datos en Django
(http://docs.djangoproject.com/en/dev/topics/serialization/?from=olddocs )
Un sistema para extender las capacidades del motor de plantillado de Django
(http://docs.djangoproject.com/en/dev/howto/custom-template-tags/)
9
El lenguaje Python
#!/usr/bin/env python
import threading # threading/ejemplothreading.py
import urllib
class FetchUrlThread(threading.Thread):
def __init__(self, url, filename):
threading.Thread.__init__(self)
self.url = url
self.filename = filename
def run(self):
print self.getName(), "Fetching ", self.url
f = open(self.getName()+self.filename, "w")
content = urllib.urlopen(self.url).read()
f.write(content)
f.close()
print self.getName(), "Saved in ", (self.getName()+self.filename)
urls = [ ('http://www.python.org', 'index.html'),
('http://www.google.es', 'index.html') ]
# Recuperar el contenido de las urls en diferentes threads
for url, file in urls:
t = FetchUrlThread(url, file)
t.start()
10
5
Servidor de despliegue
Django puede ejecutarse sobre Apache 2 bajo
mod_python o sobre cualquier servidor web compatible
con WSGI
“WSGI is the Web Server Gateway Interface. It is a specification for
web servers and application servers to communicate with web
applications (though it can also be used for more than that). It is a
Python standard, described in detail in PEP 333.”
Django también permite lanzar un servidor FastCGI
Provee su propio servidor web ligero, ideal para desarrollo
11
¿Quién lo usa?
lawrence.com – empresa de noticias locales, eventos
washingtonpost.com – varias aplicaciones
innovadoras web basadas en bases de datos
Pownce – un portal para enviar mensajes con
contenido a tus amigos
Tabblo – un portal para compartir fotos
Listado completo en: http://www.djangosites.org/
12
6
Instalación de Django
1.
2.
3.
Instalar versión 2.3 o superior de Python
Actualmente la versión es 2.6.1 o 3.0 (incompatible con 2.x)
Usaremos la 2.6.1 en carpeta downloads del CD
Instalar un servidor web, lo haremos más adelante:
http://www.djangoproject.com/documentation/modpython
Instalar una base de datos: PostgreSQL, MySQL, SQLite y
Oracle
Hay que instalar el driver correspondiente, nosotros usaremos
MySQL y su driver MySQLdb:
http://sourceforge.net/projects/mysql-python/?abmode=1
Por el momento usaremos SQLite, requieres el módulo pysqlite,
que viene de serie con Python a partir de la versión 2.03.
13
Instalación de Django
4.
Instalar Django en 4 pasos:
Descarga la última versión de Django de
http://www.djangoproject.com/download/ (usaremos la version 1.0.2)
http://docs.djangoproject.com/en/dev/releases/1.0/
Portal de documentación en: http://docs.djangoproject.com/en/dev/
En UNIX ejecuta el comando sobre el fichero: tar xzvf Django-1.0.2-
final.tar.gz. En Windows utiliza WinRar, incluido en el CD.
En línea de comando realiza cd Django-1.0.2-final
Ejecuta en UNIX el comando sudo python setup.py install o en
Windows el mismo comando quitando el sudo de delante.
Instalará Django bajo tu instancia de Python dentro del directorio site-packages.
5.
Añade a tu PATH el directorio donde están los comandos de Django:
%DIRECTORIO_INSTALACIÓN_PYTHON%\Lib\site-
packages\django\bin
Puedes probar que Django está instalando, abrir intérprete de Python y escribir
import django
14
7
Nuestra Primera Aplicación
Django
Vamos a ver cómo construir una simple
aplicación web que hace uso de una BBDD
Gestiona encuestas, formulando preguntas,
ofreciendo un conjunto de opciones de respuesta
y gestionando los votos recibidos por cada
respuesta.
Tomada del tutorial de Django:
http://docs.djangoproject.com/en/dev//intro/tutorial01/#
intro-tutorial01
15
Pasos para construir la
aplicación
1. Definir un modelo de datos en Python
2. Configurar la gestión de peticiones a
través del fichero URLconf
3. Generar la lógica de vistas que procesa los
parámetros de petición recibidos y delega la
respuesta a las plantillas
4. Crear las plantillas usadas para generar las
vistas de usuario.
16
8
Creación del proyecto
Crear la estructura de ficheros que todo proyecto
alojador de aplicaciones en Django debe seguir
Ficheros generados corresponden a un conjunto de
configuraciones para una instancia de Django
Colócate en el directorio del proyecto y escribe en línea
de comandos: django
admin.py startproject
django----admin.py
startproject
admin.py
django
django
admin.py
startproject
startproject
<nombre
<nombre----proyecto>
proyecto>
<nombre
<nombre
proyecto>
proyecto>
Ejemplo: django-admin.py startproject solopsite.
Tal utilidad se encuentra en: site-packages/django/bin
17
Revisando la estructura de
directorios
La estructura de directorios creada sería la siguiente:
solopsite/
__init__.py
manage.py
settings.py
urls.py
Donde:
__init__.py: un fichero vacío que indica a Python que este directorio es un
módulo.
manage.py: utilidad administrativa que permite interactuar con el proyecto Django
settings.py: contiene todas las configuraciones para el proyecto Django.
settings.py
settings.py
settings.py
urls.py: contiene la tabla de contenidos de nuestro proyecto, mapeando patrones
urls.py
urls.py
urls.py
de URLs entrantes a vistas que respondan a las solicitudes recibidas.
18
9
Arrancando el Proyecto
Una vez creada la estructura de directorios del proyecto,
podemos ya arrancar el servidor web mediante: python
python
python
python
manage.py runserver
manage.py
runserver. . . .
runserver
manage.py
manage.py
runserver
Desde un navegador podemos acceder a él yendo a
http://localhost:8000
19
Configurando la BBDD
Para poder configurar un motor de bases de datos asociado a tu
proyecto Django hay que modificar settings.py
settings.py
settings.py
settings.py
Habremos de modificar las siguientes variables:
DATABASE_ENGINE: asocia el string 'postgresql_psycopg2'
Comentarios de: Django & Google App Engine (0)
No hay comentarios