PROGRAMACIÓN WEB CON PYTHON
¿Cómo utilizar Python en la web?
Programación
para la Web se ha convertido en un tema candente desde el surgimiento
de la "Web 2.0", que se centra en el contenido generado por los usuarios
en los sitios web. Siempre ha sido posible utilizar Python para la creación de sitios web, pero era una tarea bastante tediosa. Por
lo tanto, muchos marcos y herramientas de ayuda se han creado para
ayudar a los desarrolladores en la creación de sitios más rápidas y
robustas. Este CÓMO describe algunos de los métodos utilizados para combinar Python con un servidor web para crear contenido dinámico
Django es un framework web de alto nivel...
Un framework web es un software que alivia el sufrimiento derivado de construir
páginas web dinámicas. Abstrae problemas comunes al desarrollo web y proporciona
atajos para tareas de programación frecuentes.
Para los lectores que han llegado tarde a la fiesta: un sitio web dinámico es
uno en el que las páginas no son simplemente documentos HTML colocados en algún
lugar del sistema de ficheros de un servidor. En cambio, en un sitio web
dinámico, cada página la genera un programa de computador —una famosa "aplicación
web"— que usted, el desarrollador web, crea. Por ejemplo, una aplicación web
podría obtener registros de una base de datos o realizar alguna acción basándose
en la entrada del usuario.
Un buen framework web resuelve los siguientes problemas:
- Proporciona un método para hacer corresponder peticiones URL con el código que maneja las peticiones. En otras palabras, le otorga una manera de designar qué código se ejecutará para cada URL. Por ejemplo, se le podría decir al framework: "Para las URLs que se parezcan a /users/joe/, ejecuta el código que muestre el perfil del usuario con ese nombre de usuario".
- Facilita mostrar, validar y volver a mostrar formularios HTML. Los formularios HTML son la principal manera de obtener datos de entrada de los usuarios web, así que más le vale a un framework web facilitar la representación de formularios y el manejo del código tedioso para mostrar y volver a mostrar formularios (resaltando los errores).
- Convierte la entrada que envía el usuario en estructuras de datos que se pueden manipular cómodamente. Por ejemplo, el framework podría convertir los datos de un formulario HTML en tipos de datos nativos al lenguaje de programación que se esté utilizando.
- Ayuda a separar el contenido de la presentación mediante un sistema de plantillas, de manera que se pueda cambiar el aspecto de un sitio web sin afectar al contenido, y viceversa.
- Se integra cómodamente con las capas de almacenamiento —como las bases de datos— pero no exije estrictamente el uso de una base de datos.
- Le permite trabajar más productivamente, a un nivel de abstracción mayor que si estuviera programando usando, digamos, HTTP. Pero no le prohíbe ir un nivel de astracción "hacia abajo" cuando sea necesario.
- Se aparta de su camino, evitando llenarle la aplicación de manchas sucias, como URLs que contengan ".aspx" o ".php".
Django hace todas estas cosas bien; y presenta una serie de características que
elevan el listón de lo que debería ser un framework web.
El framework está escrito en Python, un lenguaje de programación bonito,
conciso, potente y de alto nivel. Para desarrollar un sitio utilizando Django
hay que escribir código Python que utiliza las bibliotecas de Django. Aunque
este libro no incluye un tutorial completo de Python, sí llama la atención sobre
características y funcionalidades de Python cuando es procedente, especialmente
cuando el código no tiene sentido de forma inmediata.
Usando el framework Django
Django es uno de los Frameworks de alto nivel que utiliza python para el desarrollo de aplicaciones de lato rendimiento. Primero generado por una aplicacion de noticias en línea.Django maneja plazos de codificacion intensivos y los exigentes requisitos de sus desarrolladores.Django es popular por usar un diselo limpio, rápido y pragmático.
Instalar Django
Ahora que ya tenemos python instalado podemos hacer lo mismo con django, en nuestro caso lo haremos con su versión 1.6.2, así que nos dirigimos a la web de django y descargamos el .tar llamado Django-1.6.2.tar.gz, y lo descomprimimos también en el mismo directorio donde está python, yo lo tengo como C:\Django.
Configurar la base de datos
El único prerequisito de Django es una instalación funcionando de Python. Sin
embargo el desarrollo de sitios web con soporte de base de datos, para esto
necesitarás instalar un servidor de base de datos de algún tipo, para almacenar
tus datos.
Si sólo quieres comenzar a jugar con Django, salta a la sección “Comenzar un
proyecto” – pero créenos, querrás instalar una base de datos finalmente.
Todos los ejemplos de este libro asumen que tienes una base de datos
configurada.
Hasta el momento de escribir esto, Django admite tres motores de base de
datos:
- PostgreSQL (http://www.postgresql.org/)
- SQLite 3 (http://www.sqlite.org/)
- MySQL (http://www.mysql.com/)
Se está trabajando para admitir Microsoft SQL Server y Oracle. El sitio
web de Django siempre contendrá la última información acerca de las base de
datos admitidas.
A nosotros el que más nos gusta es PostgreSQL, por razones que exceden el
alcance de este libro, por eso lo mencionamos primero. Sin embargo, todos
los motores que listamos aquí trabajan bien con Django.
SQLite merece especial atención como herramienta de desarrollo. Es un motor de
base de datos extremadamente simple y no requiere ningún tipo de instalación y
configuración del servidor. Es por lejos el más fácil de configurar si sólo
quieres jugar con Django, y viene incluido en la biblioteca estándar de Python
2.5.
En Windows, obtener los drivers binarios de la base de datos es a veces un
proceso complicado. Ya que sólo estás iniciándote con Django, recomendamos usar
Python 2.5 y el soporte incluido para SQLite. La compilación de drivers
puede ser estresante.
Usar Django sin una base de datos
Como mencionamos anteriormente, Django actualmente no requiere una base de
datos. Si sólo quieres usar este como un servidor dinámico de páginas que no
use una base de datos, está perfectamente bien.
Con esto dicho, ten en cuenta que algunas de las herramientas extras de Django
requieren una base de datos, por lo tanto si eliges no usar una base de
datos, perderás estas utilidades.
Comenzar un 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.
Si esta es la primera vez que usas Django, tendrás que tener cuidado de algunas
configuraciones iniciales. Crea un nuevo directorio para empezar a trabajar,
por ejemplo algo como /home/username/djcode/, e ingresa a este directorio.
El servidor de desarrollo
Django incluye un servidor web ligero que puedes usar mientras estás
desarrollando tu sitio. Incluimos este servidor para que puedas desarrollar tu
sitio rápidamente, sin tener que lidiar con configuraciones de servidores web
de producción (i.e., Apache) hasta que estés listo para la producción. Este
servidor de desarrollo vigila tu código a la espera de cambios y se reinicia
automáticamente, ayudándote a hacer algunos cambios rápidos en tu proyecto sin
necesidad de reiniciar nada.
Entra en el directorio mysite, si aún no lo has hecho, y ejecuta el
comando python manage.py runserver
Tu Primera aplicación Django
Aprendamos a base de ejemplos.
Esta aplicación constirá en dos partes:
Desde la línea de comandos, utiliza
Acabas de arrancar el servidor de desarrollo de Django, un servidor web liviano escrito completamente en Python. Lo hemos incluido en Django para que puedas desarrollar de manera rápida, sin tener que vértelas con la configuración de un servidor de producción -- como Apache -- hasta que estés listo para producción.
Este es un buen momento para que recuerdes: NO uses este servidor en nada que se parezca a un entorno de producción. Su objetivo es ser usado sólo para desarrollo. (Estamos en el negocio del desarrollo de frameworks web, no de servidores web).
Ahora que el servidor está andando, visita http://127.0.0.1:8000/ usando un navegador web. Verás una página "Welcome to Django", en un agradable tono azul claro. ¡Funcionó!
- Un sitio público que permitirá a la gente ver encuestas y votar en ellas.
- Un sitio de administración que permitirá añadir, cambiar o eliminar encuestas.
import django
. Si ese comando se ejecuta exitosamente, sin errores, entonces Django está instalado.Creando un proyecto
Si ésta es tu primera vez usando Django, tendrás que hacerte cargo de una configuración inicial. Esto es, necesitarás auto-generar código que define un proyecto Django -- un conjunto de configuraciones para una instancia de Django, incluyendo configuración de base de datos, opciones específicas de Django y detalles propios de tu aplicación.Desde la línea de comandos, utiliza
cd
para cambiar de directorio a aquel donde quieras almacenar el código, luego ejecuta el comando django-admin.py startproject mysite
. Esto creará un directorio mysite
en el directorio actual.El servidor de desarrollo
Verifiquemos que lo anterior ha funcionado. Entra al directoriomysite
y ejecuta el comando python manage.py runserver
. Verás la siguiente salida en la línea de comandos:Validating models...
0 errors found.
Django version 1.0, using settings 'mysite.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
Acabas de arrancar el servidor de desarrollo de Django, un servidor web liviano escrito completamente en Python. Lo hemos incluido en Django para que puedas desarrollar de manera rápida, sin tener que vértelas con la configuración de un servidor de producción -- como Apache -- hasta que estés listo para producción.
Este es un buen momento para que recuerdes: NO uses este servidor en nada que se parezca a un entorno de producción. Su objetivo es ser usado sólo para desarrollo. (Estamos en el negocio del desarrollo de frameworks web, no de servidores web).
Ahora que el servidor está andando, visita http://127.0.0.1:8000/ usando un navegador web. Verás una página "Welcome to Django", en un agradable tono azul claro. ¡Funcionó!
Configuración de la base de datos
Ahora, editasettings.py
. Es un módulo Python normal
con variables a nivel de módulo que representan configuraciones de
Django. Modifica los siguientes valores en el elemento 'default'
de DATABASES
para que coincida con la configuración de tu base de datos.-
ENGINE
-- Ya sea'django.db.backends.postgresql_psycopg2'
,'django.db.backends.mysql'
o'django.db.backends.sqlite3'
. Otros backends también están disponibles.
-
NAME
-- El nombre de tu base de datos. Si estás usando SQLite la base de datos será un archivo en tu ordenador; en tal caso,NAME
debería ser la ruta absoluta, incluyendo nombre de archivo, de dicho archivo. Si el archivo no existe se creará automáticamente cuando sincronices la base de datos por primera vez (ver abajo).
Cuando especifiques la ruta, siempre utiliza barras hacia la derecha / incluso en Windows (por ejemplo:C:/homes/user/mysite/sqlite3.db
).
-
USER
-- El usuario de la base de datos (no usado en SQLite).
-
PASSWORD
-- La contraseña de la base de datos (no usado en SQLite).
-
HOST
-- La máquina donde está ubicada la base de datos. Déjalo como una cadena vacía si la base de datos está en la misma máquina física (no usado en SQLite).
ENGINE
'django.db.backends.sqlite3'
). SQLite viene incluido como parte de Python 2.5 y superior, así que no tendrás que instalar nada.Creando los modelos
Ahora que el entorno -- un "proyecto" -- está creado, estás en condiciones de comenzar con algo real.
Cada aplicación que codificas en Django consiste de un paquete Python, en algún lugar de tu ruta de búsqueda,
que sigue cierta convención. Django viene con una utilidad que genera
automáticamente la estructura de directorios básica de una aplicación,
de forma que te puedas enfocar en escribir código en vez de estar
creando directorios.
Para crear tus aplicaciones, asegúrate de estar en el directorio
mysite
e introduce este comando:python manage.py startapp polls
Esto creará un directorio
polls
, que contiene la siguiente estructura:polls/
__init__.py
models.py
tests.py
views.py
En nuestro sistema de encuestas, crearemos dos modelos: polls (encuestas) y choices (opciones). Una
encuesta
contiene una pregunta y una fecha de publicación. Una opción
tiene dos campos: el texto de la opción y un contador. Cada opción está asociada a una encuesta.
Estos conceptos se representan por un par de clases Python. Edita el archivo
polls/models.py
para que contenga algo como:from django.db import models
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice = models.CharField(max_length=200)
votes = models.IntegerField()
El código es directo. Cada modelo está representado por una subclase de
django.db.models.Model
. Cada modelo tiene algunas variables de clase, que representan campos en la base de datos.
Cada campo está representado por una instancia de una clase
models.Field
-- por ejemplo, models.CharField
para carácteres y models.DateTimeField
para datetimes. De esta forma se le dice a Django qué tipo de datos contiene cada campo.Proyectos vs. aplicaciones
¿Cuál es la diferencia entre un proyecto y una aplicación? Una aplicación es una aplicación web que hace algo -- por ejemplo, una bitácora, un registro de datos públicos o un sistema de encuestas. Un proyecto es un conjunto de aplicaciones configuradas para un sitio web particular. Un proyecto puede contener múltiples aplicaciones. Una aplicación puede pertenecer a múltiples proyectos.
En este tutorial crearemos nuestra aplicación para encuestas en el directorio
mysite
por simplicidad. Como consecuecia de esto, la aplicación estará
acoplada con el proyecto -- o sea, el código Python en la aplicación de
encuestas, va a acceder a mysite.polls
. Luego en este tutorial, discutiremos la forma de desacoplar las aplicaciones para distribuirlas.
Para crear tus aplicaciones, asegúrate de estar en el directorio
mysite
e introduce este comando:python manage.py startapp polls
Esto creará un directorio
polls
, que contiene la siguiente estructura:polls/
__init__.py
models.py
tests.py
views.py
Esta estructura de directorios contendrá la aplicación de encuestas.
El primer paso para codificar una aplicación web en Django es definir
tus modelos -- esencialmente, la estructura de la base de datos, con
metadatos adicionales.
Activando modelos
Con sólo la porción de código de modelo mostrada, Django obtiene mucha información. Por ejemplo, ahora Django es capaz de:- Crear un esquema de base de datos (las sentencias
CREATE TABLE
) para esta aplicación. - Crear una API de acceso a datos en Python para acceder a los objetos Poll y Choice.
polls
está instalada.Jugando con la API
Ahora, usemos el intérprete interactivo de Python para jugar con la
API que Django ofrece. Para invocar el intérprete, usa este comando:
python manage.py shell
Usamos este comando en vez de teclear simplemente "python", debido a que
manage.py
configura el entorno del proyecto por nosotros. "Configurar el entorno" implica dos cosas:- Agregar
mysite
asys.path
. Por flexibilidad, varias partes de Django se refieren a los proyectos en notación con puntos (por ejemplo'mysite.poll.models'
). Para que esto funcione, el paquetemysite
debe estar ensys.path
.
Referencias
http://django.es/docs/intro/tutorial01/
https://www.video2brain.com/mx/cursos/desarrollo-web-con-django
http://django-book.mkaufmann.com.ar/chapter02.html
No hay comentarios:
Publicar un comentario