sábado, 29 de agosto de 2015

PROGRAMACIÓN WEB CON PYTHON

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:
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:
  • 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.
Asumiremos que ya has instalado Django. Esto se puede verificar ejecutando el intérprete interactivo de Python y tecleando 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 directorio mysite 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, edita settings.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).
Si las bases de datos son algo nuevo para ti te recomendamos usar simplemente SQLite (poniendo en 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.
Pero primero necesitamos decirle a nuestro modelo que la aplicación 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 a sys.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 paquete mysite debe estar en sys.path.
Ya hemos visto un ejemplo de esto.

 

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