Tecnología de Programación V Ciclo
Django
Framework web de Python
Es un framework de desarrollo web que provee una infraestructura de
programación para las aplicaciones , es de código abierto, el cual ha sido escrito con
Python acorde al paradigma Model Template View, fue nombrado así en referencia al
guitarrista de jazz gitano Django Reinhardt. Django se centra en automatizar todo lo
posible y se adhiere al principio “Don't Repeat Yourself”. Permite construir en
profundidad, de forma dinámica, sitios interesantes en un tiempo extremadamente
corto.
Django es un conjunto de bibliotecas y herramientas que nos van a permitir
crear sitios web de forma más rápida y con menos código, ya que nos proporciona
muchas aplicaciones útiles para cosas comunes del desarrollo web, como
autenticación de usuarios o administración del contenido del sitio, entre otras, también
podemos encontrar aplicaciones de terceros para reutilizar y modificar código.
Historia
A continuación se presenta brevemente información acerca de la aparición y
evolución de Django:
Apareció el año 2003, cuando un equipo de desarrolladores web del diario
Lawrence Journal World: Adrian Holovaty y Simon Willison, comenzaron a usar
Python para crear sus aplicaciones. El equipo de The World Online, responsable de la
producción y mantenimiento de varios sitios locales de noticias, prosperaban en un
entorno de desarrollo presionados por las fechas límite del periodismo, es así que los
periodistas y directivos exigían que se agregaran nuevas características y que
aplicaciones enteras se crearan a una velocidad vertiginosa, es así que Adrian y
Simon desarrollaron por necesidad un framework de desarrollo Web que les ahorrara
tiempo, era la única forma en que podían crear aplicaciones mantenibles en tan poco
tiempo. Luego en el año 2005, luego de haber desarrollado este framework hasta el
punto en que estaba haciendo funcionar la mayoría de los sitios World Online, que
ahora incluía a Jacob Kaplan Moss, liberó el framework como software de código
abierto.
Estructura de un sitio web
En Django tenemos Proyectos y Aplicaciones:
a) Proyecto: va a contener la configuración general de nuestro sitio (la base de
datos, email de los admins, etc.) y un conjunto de aplicaciones.
b) Aplicaciones: van a ser las que tengan la funcionalidad en sí de nuestro sitio.
Proyecto
Aplicación Aplicación Aplicación
. . . .
Ing. Ricardo More Reaño 1
Tecnología de Programación V Ciclo
Arquitectura MVC(Modelo-Vista-Controlador)
Esta arquitectura separa las aplicaciones en tres partes y Django propone
utilizarla:
Modelo: Define la estructura de la base de datos y se encarga de la
comunicación con ella.
Vista: la interfaz del usuario, con el código que elije qué datos pedirle o
mostrarle en cada momento.
Controladores: esta parte permite seleccionar qué vistas ejecutar en
respuesta a las acciones o peticiones del usuario.
Instalación de Python
Como nosotros utilizamos ubuntu ya tenemos instalado python, pues lo vimos
en la sesión anterior y lo podemos verificar escribiendo en una terminal: python
Descarga e instalación de Django
En una terminal escribimos como se muestra a continuación:
1) wget http://media.djangoproject.com/releases/1.3/Django-1.3.1.tar.gz
Si observamos nuestra carpeta personal nos daremos cuenta que se ha
descargado: Django-1.3.1.tar.gz
2) sudo tar zxvf Django-1.3.1.tar.gz
Ing. Ricardo More Reaño 2
Tecnología de Programación V Ciclo
Si observamos nuestra carpeta personal nos daremos cuenta que después de
descomprimir tenemos:
3) cd "Django-1.3.1"
Ahora estamos en la carpeta Django-1.3.1
4) sudo python setup.py install
Verificación de la instalación
Vamos a constatar si django está correctamente instalado, para eso
accedemos a la shell de comandos e iniciamos el interprete python e importamos
django escribiendo: import django y luego mostrar la versión instalada con
django.VERSION
Descargar e instalar el conector de base de datos
Nosotros utilizaremos como servidor de base de datos mysql(se puede
realizar con otros), que es el que ya tenemos instalado en nuestros equipos, lo que
implica trabajar con el conector MySQLdb.
Primero se instalará los paquetes con los cuales tiene dependencias, estos
son: setuptools y libmysqlclient-dev.
Ing. Ricardo More Reaño 3
Tecnología de Programación V Ciclo
a) setuptools
wget pypi.python.org/packages/source/s/setuptools/setuptools-0.6c11.tar.gz
Se ha descargado el archivo en la carpeta personal.
sudo tar zxvf setuptools-0.6c11.tar.gz
Se descomprime.
cd setuptools-0.6c11/
Nos ubicamos en la carpeta setuptools-0.6c11/
sudo python setup.py install
Se instala.
b) libmysqlclient-dev
sudo apt-get install libmysqlclient-dev
c) MySQLdb
sudo apt-get install python-mysqldb
Ing. Ricardo More Reaño 4
Tecnología de Programación V Ciclo
También podemos hacerlo instalando el paquete
MySQLdb desde http://www.djangoproject.com/r/python-mysql/
Verificación de la instalación
Vamos a constatar si MySQLdb está correctamente instalado, para eso
accedemos a la shell de comandos e iniciamos el interprete python e importamos
MySQLdb escribiendo: import MySQLdb y luego MySQLdb.__doc__
PROYECTO
Un proyecto es una colección de configuraciones para una instancia de Django,
incluyendo configuración de base
de datos, opciones específicas de Django y configuraciones específicas de
aplicaciones.
En primer lugar vamos a crear un directorio(carpeta) con el nombre más
adecuado, en nuestro caso: sitio_web
Nos ubicamos en el directorio actual.
En una terminal escribir: django-admin.py startproject prueba
Ing. Ricardo More Reaño 5
Tecnología de Programación V Ciclo
se ha creado nuestro proyecto en el directorio sitio_web.
Al abrir el proyecto podemos apreciar los siguientes archivos, de los cuales se
hace una breve descripción:
• __init__.py: Un archivo necesario para que Python trate el directorio ejemplo
como un paquete (un grupo de módulos de Python). Es un fichero vacío y
normalmente no se le añade nada.
• manage.py: Script que permite interactuar con el proyecto de Django de
diversas maneras.
• settings.py: Características de configuración de este proyecto Django.
• urls.py: Las direcciones URL de este proyecto Django. Piense en ello como la
“tabla de contenidos” de su sitio Django.
Servidor de desarrollo
Django tiene su propio servidor de desarrollo que permite probar las
aplicaciones de forma eficiente de forma local, el que podemos utilizar antes de
hacerlo con uno de producción como apache por ejemplo.
Vamos a correr el servidor web de desarrollo para determinar si funciona,
tenemos primero que ubicarnos en nuestro directorio(prueba) y luego en el mismo
terminal escribir:
python manage.py runserver
Ing. Ricardo More Reaño 6
Tecnología de Programación V Ciclo
En un navegador la url:
http://localhost:8000
También puede ser:
ttp://127.0.0.1:8000
Debe mostrarse la siguiente página:
En el proyecto vamos a crear dos nuevas carpetas(directorios) los que se
llamarán: static y templates
En una terminal escribir: mkdir static y mkdir templates, primero hay que
cambiarnos a nuestro directorio(prueba).
Dentro del directorio prueba se han creado static(contenido estático) y
templates(plantillas) como se aprecia en la siguiente imagen:
Ing. Ricardo More Reaño 7
Tecnología de Programación V Ciclo
Abrir el archivo settings.py con un editor de texto que puede observarlo en la
imagen anterior y agregar en la parte superior lo siguiente: import os.path
En el mismo el archivo ubicar la variable: STATICFILES_DIRS y agregar lo
siguiente:
os.path.join(os.path.dirname(__file__), 'static').replace('\\','/'),
En el mismo el archivo ubicar la variable: TEMPLATE_DIRS y agregar lo
siguiente:
os.path.join(os.path.dirname(__file__),'templates').replace('\\','/'),
Dentro del directorio static vamos a crear una una hoja de estilos de nombre:
forma(forma.css), el cual va a tener el siguiente código:
body {
color: #bfaa28;
background: #453669;
padding: 0 2em;
margin: 0;
font-family: FreeSerif;
font-size: 120%;
Ing. Ricardo More Reaño 8
Tecnología de Programación V Ciclo
h1 {
padding: 20px 30px;
background: #675fff;
color: #ffa232;
font-size: 150%;
text-align: center
}
h2 {
color: #bf8aaa;
border-top: 1px dotted #ffffff;
margin-top: 2em
}
p{
margin: 1em 0
}
a:link {
color: #fe5122;
}
a:visited {
color: #fe5121;
}
a:hover {
color: #fe5aaa;
}
hr {
margin: 20px 0px;
color: #bbdcdd;
background-color: #efa1ff;
height: 4px;
}
footer {
font-size: 80%;
color: #ffa567;
text-align: center;
}
Ing. Ricardo More Reaño 9
Tecnología de Programación V Ciclo
Dentro del directorio templates vamos a crear un archivo html de nombre:
ejemplo(ejemplo.html), el cual va a tener el siguiente código:
<html lang="es">
<head>
<meta charset="utf-8">
<link rel="stylesheet" href="{{ STATIC_URL }}forma.css"/>
<title>{% block titulo %}Sin título{% endblock %}</title>
</head>
<body>
{% block principal %}Sin cuerpo{% endblock %}
<hr/>
<footer>
Ingeniería de Sistemas V Ciclo
</footer>
</body>
</html>
Crear una aplicación que tendrá por nombre bienvenida, la misma que se
ubicará dentro de nuestro proyecto. En una terminal escribir(tenemos que estar
dentro de nuestro proyecto):
python manage.py startapp bienvenida
Dentro del proyecto tenemos:
Ing. Ricardo More Reaño 10
Tecnología de Programación V Ciclo
Se crea la función de vista que enviará la información a la plantilla.
Tenemos que editar el archivo views.py que se encuentra dentro la aplicación
bienvenida en nuestro proyecto prueba. Se debe agregar lo siguiente:
from django.shortcuts import render
def presenta(request):
return render(request, 'saludo.html', {'nombre': 'Estudiantes de la
Escuela Profesional ...'})
En el directorio templates vamos a crear el archivo html de nombre
saludo(saludo.html), con el siguiente contenido:
{% extends "ejemplo.html" %}
{% block titulo %}Tema 12{% endblock %}
{% block principal %}
<h1>Bienvenidos {{ nombre }}!</h1>
<p>
Aplicación web utilizando el framework Django.
</p>
{% endblock %}
En la imagen se aprecia “saludo.html”
Ing. Ricardo More Reaño 11
Tecnología de Programación V Ciclo
Vamos a relacionar la función de vista con un patrón URL. Tenemos que
editar el archivo urls.py de nuestro proyecto agregando:
(r'^bienvenida/$', 'prueba.bienvenida.views.presenta'),
En su navegador escribir: http://localhost:8000/bienvenida/
Ing. Ricardo More Reaño 12