django - plataforma de sitios web

31
Alumnos: José Antonio Sánchez Pallero Francisco Javier Carazo Gil

Upload: jcarazo

Post on 29-Nov-2014

16.985 views

Category:

Technology


6 download

DESCRIPTION

Django: introducción, historia del framework, instalación y ejemplo práctico de desarrollo.

TRANSCRIPT

Page 1: Django - Plataforma de sitios web

Alumnos: José Antonio Sánchez PalleroFrancisco Javier Carazo Gil

Page 2: Django - Plataforma de sitios web

Condiciones

Estilo y formato de la presentación:

OpenOffice.org con plantilla generada para la ocasión

Esta presentación se encuentra bajo licencia:

CreativeCommons 3.0 Reconocimiento-NoComercial España

Page 3: Django - Plataforma de sitios web

Sistema operativo:

Ubuntu 9.10 Karmic Koala compilada para amd64

Programa de presentación:

OpenOffice.org 3.1.1 – Impress

Editor de texto:

Geany (posiblemente el mejor editor de texto para Gnome)

Servidor web:

Servidor de pruebas de Django (para producción se recomienda Apache)

SGBD:

MySQL 5.1.37

Algunas imágenes han sido adquiridas de la Fundación Wikimedia

Infraestructura

Page 4: Django - Plataforma de sitios web

Django es un framework o plataforma de alto nivel, desarrollada en Python, que permite desarrollos rápidos, prácticos y limpios de aplicaciones web. Django está centrado en la reutilización de código, la conectividad y extensibilidad de componentes, del desarrollo rápido y la automatización de tareas lo máximo posible, siguiendo el principio DRY (Don’t Repeat Yourself), el cual determina que cada pieza de conocimiento dentro de un sistema debe tener una representación única, imperativa y sin ambigüedades.

Django: Definición

Page 5: Django - Plataforma de sitios web

La plataforma Django consta de los siguientes elementos:

• Mapeador relacional de Objetos: Permite definir el modelo de datos completamente en Python, con una API de acceso dinámico a datos gratuita, aunque permite el uso de sentencias SQL si así se requiere en el desarrollo de una aplicación.

• Interfaz de administración automático: Django permite la creación automatizada de interfaces de usuario para agregar o editar contenidos de la aplicación web, liberando al administrador del sistema de estas tareas.

Django: Estructura 1/2

Page 6: Django - Plataforma de sitios web

• Diseño elegante de URL: Django permite al administrador determinar un esquema de URL con sentido, sencillo y directo para el usuario final.

• Sistema de Plantillas: Django posee un lenguaje de generación de plantillas potente, fácil y extensible, que permite la separación de código, contenido y diseño.

• Internacionalización: Viene con un amplio soporte de idiomas, permitiendo además la traducción de cadenas específicas no incluidas por el soporte original.

Django: Estructura 2/2

Page 7: Django - Plataforma de sitios web

Fue desarrollado en origen para gestionar varias páginas orientadas a noticias de la World Company de Lawrence, Kansas, en el que era un entorno muy mutable y con unas necesidades muy estrictas.

Django fue liberada al público bajo una licencia BSD en julio de 2005; la plataforma fue nombrada en alusión al guitarrista de jazz gitano Django Reinhardt, del mismo modo que Python debe su nombre a los Monty Python.

Django: Historia

Page 8: Django - Plataforma de sitios web

a) lawrence.com:Sitio de entretenimiento local renombrado internacionalmente con noticias, historias, grupos de música, bebidas especiales, etc.

Django: Casos de Uso 1/6

Page 9: Django - Plataforma de sitios web

b) washingtonpost.com:Selección de aplicaciones web innovadoras del periódico The Washington Post.

Django: Casos de Uso 2/6

Page 10: Django - Plataforma de sitios web

c) EveryBlock: Sistema de noticias de localidades estadounidenses.

Django: Casos de Uso 3/6

Page 11: Django - Plataforma de sitios web

d) LJWorld.comSitio web de empresa líder de periodismo.

Django: Casos de Uso 4/6

Page 12: Django - Plataforma de sitios web

e) TabbloSitio web de compartición de fotos, con el detalle innovador de comentar las mismas.

Django: Casos de Uso 5/6

Page 13: Django - Plataforma de sitios web

f) Toronto LifeDiario de la ciudad de Toronto.

Django: Casos de Uso 6/6

Page 14: Django - Plataforma de sitios web

Django se puede instalar de dos maneras:

A) Manual - Descargando de su sitio web la última versión comprimida: http://django.es/

B) Automática - Instalando desde el gestor de paquetes synaptic de GNU/Linux Ubuntu/Debian derivativos

Django: Instalación 1/4

Page 15: Django - Plataforma de sitios web

Django: Instalación (Manual) 2/4

Page 16: Django - Plataforma de sitios web

tar xzvf Django-1.1.tar.gzcd Django-1.1sudo python setup.py install

Django: Instalación (Manual) 3/4

Page 17: Django - Plataforma de sitios web

Django: Instalación (Automática) 4/4

Page 18: Django - Plataforma de sitios web

Software a instalar Servidor MySQL: mysql-server Interfaz MySQL-Python: python-mysqldb Subversion: subversionEl nombre de los paquetes puede variar entre

distintas distribuciones y repositorios.

Django: Instalación SGBD

Page 19: Django - Plataforma de sitios web

Ejecutamos: django-admin.py startproject misitio

Nos dirigimos a misitio y ejecutamos el servidor de pruebas:

python manage.py runserver Podemos ver nuestro primer sitio Django en el puerto 8000 de

nuestro equipo: http://localhost:8000

Django: Primer Sitio Web

Page 20: Django - Plataforma de sitios web

Diferencia

Proyecto: sitio web completo que consta de varias aplicaciones donde se define el controlador.

Aplicación: parte del sitio web donde se define el modelo y la vista.

Proyecto

Creación: python django-admin.py startproject misitio

__init__.py

manage.py: Gestión del proyecto.

settings.py: Configuración del proyecto.

urls.py: Controlador. Mapea las url entrantes a funciones Python definidas en módulos.

Django: Estructura Sitio 1/2

Page 21: Django - Plataforma de sitios web

Aplicación

Creación: python manage.py startapp miaplicacion __init__.py models.py: Modelos u objetos que serán mapeados a una base

de datos relacional. views.py: Funciones que van a responder a las urls entrantes.

Vista.

Modelo - Vista - Controlador

Django: Estructura Sitio 2/2

Page 22: Django - Plataforma de sitios web

Vamos a desarrollar una aplicación de ejemplo que gestione la información del personal de un organismo. La estructura de la información será la siguiente:

A partir de ahora se comentaran los aspectos más relevantes, dejando los detalles para visualizarlos directamente en el código

Django: Ejemplo 1/7

Page 23: Django - Plataforma de sitios web

Las posibilidades que debe ofrecernos el sistema son:

Disponibilidad de un panel de adminstración para añadir, editar y eliminar datos.

Los datos han de estar relacionados como muestra el diagrama de clases.

Debemos disponer de un interfaz web público que nos permita listar los datos con un un aspecto gráfico atractivo por: Instituto: Mostrando los grupos pertenecientes a un

Instituto. Grupos: Mostrando los investigadores pertenecientes a

un grupo

Django: Ejemplo 2/7

Page 24: Django - Plataforma de sitios web

Creamos el proyecto:

django-admin.py startproject personal

Creamos la aplicación dentro del proyecto:

python manage.py startapp aplicacion

Configuramos el proyecto:

./settings.py: Base de datos, aplicaciones instaladas, directorio de templates.

./manage.py: Mediante expresiones regulares definimos el tratamiento de las distintas URL que llevarán a distintas vistas:

personal.aplicacion.views.index

Especial atención a las peticiones del servidor a archivos estáticos: CSS, imágenes... con la regla /site_media

Django: Ejemplo 3/7

Page 25: Django - Plataforma de sitios web

./aplicacion/models.py: Definimos el modelo. Nos abstraemos de SQL para trabajar sobre clases con una sintaxis propia de Django. Por ejemplo:

class Grupo(models.Model):

nombre = models.CharField("Grupo", max_length=64)

instituto = models.ForeignKey(Instituto, verbose_name="Instituto al que pertenece")

Al terminar de redefinir el modelo sincronizamos la base de datos:

python manage.py syncdb ./aplicacion/admin.py: Importamos y registramos las clases de los

modelos para poder interactuar con el interfaz de administración.

./aplicacion/views.py: Definimos tres vistas (index, instituto y grupo).

Django: Ejemplo 4/7

Page 26: Django - Plataforma de sitios web

Ejemplo de vista:

def index(request):

# todos los institutos para el listado lateral

institutos = Instituto.objects.all()

# se llama al template con esta info.

return render_to_response('aplicacion/base.html', {'institutos': institutos,})

Template o plantilla

Definida en el directorio de las plantillas, es un archivo con etiquetas HTML que incluye trozos de código propios de Python que mediantes bucles, condicionales... controlamos la salida de los datos por pantalla. Estos datos los pasamos con el segundo parámetro de la función render_to_response.

Django: Ejemplo 5/7

Page 27: Django - Plataforma de sitios web

La plantilla está desarrollada en un sólo fichero: base.html.

Las construcciones propias de Django que he utilizado han sido las siguientes:

Iteración

{% for investigador in investigadores %}

<h3>{{ investigador.apellidos }}, {{ investigador.nombre }} (<em>{{ investigador.nombreUsuario }}</em>)</h3>

{% endfor %}

Se itera sobre la lista de investigadores devuelta por la vista: personal.aplicacion.views.grupo

ACLARACIÓN: Su aspecto estético está basado en una plantilla con licencia CreativeCommons, llamada CleanType, ligeramente modificada.

Django: Ejemplo 6/7

Page 28: Django - Plataforma de sitios web

Condicional:

{% if institutos %}

{% for instituto in institutos %}

<li><a href="/instituto/{{ instituto.id }}">{{ instituto.nombre }}</a></li>

{% endfor %}

{% else %}

<li>Vac&iacute;o</p>

{% endif %}

Para navegar entre distintas vistas nos valemos de direcciones URL del tipo, a las que llegamos por enlaces:

http://localhost:8000/instituto/2/ → Llama a la vista instituto pasándole un 2 como parámetro.

Django: Ejemplo 7/7

Page 29: Django - Plataforma de sitios web

Positivo

Desarrollo muy rápido en comparación con otras tecnologías web.

Framework maduro con mucha documentación y una nutrida comunidad.

Nivel de abstracción suficientemente alto para el desarrollo rápido, suficientemente bajo para controlar ciertos aspectos importantes.

Desentendimiento de labores tan importanes para la seguridad como la autenticación o la entrada de datos por parte del usuario.

Abstracción total de la BBDD y trabajo directamente sobre los objetos.

Rendimiento mejor (según algunas referencias) que otros framework también libres como RoR o Symfony.

Es software libre y está escrito en Python

Django: Conclusiones 1/2

Page 30: Django - Plataforma de sitios web

Negativo

Dificultad para encontrar host con soporte Django. Menor implantación en proyectos de gran tamaño que otras

soluciones. Mayor dificultad que otras soluciones para instalar y configurar el

framework.

Django: Conclusiones 2/2

Page 31: Django - Plataforma de sitios web

The Django Book - Adrian Holovaty y Jacob Kaplan-Moss (GNU Free Document License) http://www.djangobook.com/

Tutorial de Django - David Asorey Álvarez (CC) http://davidasorey.net/static/django-tutorial/

Django: Bibliografía