Continuando con nuestra serie sobre Python, hoy les traemos una introducción a Django, el web framework más exitoso para Python.
Lo que necesitamos tener:
Diría que lo único que necesitamos para poder usar Django es python, pero igual necesitamos algún motor de base de datos, pero como posiblemente usted venga de otros lenguajes como PHP, entonces, ya debería tener instalado Mysql, Mysqli o cualquier otro (PostgreSQL, Oracle), por ello nos centraremos en la instalacion de Django y posteriormente en como “Desarrollar un simple blog utilizando Django framework”.
A lo nuestro:
- Descargar Django Framework
- Instalar Python…ver primer post de la serie “Semana Python”
- Ganas de querer aprender un Framework que te ayude para desarrollar rápidamente
Instalando Django:
Luego de descargar la versión estable de Django (en este momento es la versión 1.4), debemos pasar por los siguientes pasos para tener una instalación exitosa.
- Descomprimir el paquete Django-1.x.x.tar.gz o .zip (no importa donde lo descomprimas)
- Ir dentro del directorio que hemos descomprimido utilizando la consola/terminal (linux, unix, mac) o CMD para windows, una vez dentro de nuestro directorio, deberiamos tener un listado de archivos como el siguiente:

- Inmediatamente procederemos a la intalación con una simple linea de comandos:
python setup.py install
- Ahora solo tenemos que esperar unos segundos y hemos terminado, nuestra consola/terminal, CMD, deberia tener algo similar a esto:
... C://Python25/lib/site-packages/django/middlewarehttp.py C://Python25/lib/site-packages/django/middlewarelocale.py C://Python25/lib/site-packages/django/middlewarecache.py C://Python25/lib/site-packages/django/middlewaredoc.py C://Python25/lib/site-packages/django ...
, como es sabido, la ruta “C://Python25″, debería ser diferente para cada usuario, ya que, posiblemente Python ha sido instalado en directorios diferentes, su ruta en este momento es diferente a la mía.
- Ya tenemos Django instalado, felicidades, un nuevo mundo esta a punto de empezar
Desarrollar un Simple Blog utilizando Django Framework
He aqui, donde Dios, dijo, hágase la luz y se hizo la luz.
Ahora veamos como podemos hacer un simple blog utilizando Django Framework, debemos aclarar que no importa donde esten localizados los archivos para nuestro blog, de igual forma no necesitamos un servidor web como Apache para que nuestro proyecto funcione, ya que Django Framework trae consigo un servidor para los fines de desarrollo, aunque en producción la historia es otra.
Los proyectos con Django Frameworks estan compuestos por dos elementos: el elemento “proyecto” y el (los) elemento(s) “aplicacion(es)“, definir lo que es el proyecto no tiene mucho chiste, el proyecto es nuestro website, nuestro blog, nuestra web app, mientras que las aplicaciones son simplemente los diferentes módulos (applicaciones) que componen nuestro proyecto web (no soy William Shakespeare para complicarme con palabras rebuscadas y descripciones de poetas, mejor de ahi, se daña), empecemos con esto.
Creando le Proyecto:
- Crear un directorio llamado “Semana Python RD”, ¿tal vez en la raiz del disco?, no lo sé, usted decida
- Abrir nuestra terminal/consola/CMD e ir dentro de nuestro nuevo directorio (¿quizás necesite una ayudita extra?)
- Estando dentro de nuestro directorio “Semana Python RD”, empezamos con el primero paso para todo proyecto con Django:
django-admin.py startproject blog
esta simple linea de comandos, crea un directorio llamado “blog” dentro del direcotrio “Semana Python RD”, ya tenemos creado nuestro proyecto, el cual deberia tener un listado de archivos y directorios parecido a este:
- manage.py
- blog
- __init__.py
- settings.py
- urls.py
- wsgi.py
- Momento de alabar a Dios, estando dentro de nuestro directorio “blog” escribimos esta linea de comandos para ejecutar el servidor web y ver nuestro proyecto corriendo en el navegador:
"python manage.py runserver"
, nuestra consola/terminar/DOS deberia tener una imagen como esta:

- Veamos como se ve nuestro blog: Abrir el navegador de su preferencia e ir a la siguiente dirección:
http://127.0.0.1:8000
- Nuestro blog debería mostrar una pantalla como esta:

Y ya tenemos nuestro proyecto creado, nuestro blog.
Nuestro siguiente paso es crear las aplicaciones que conforman el blog.
Configurando nuestro motor de base de datos
Esto es sencillo:
- Crear la base de datos llamada “blog” o seleccione un nombre a gusto (recordar que podemos usar Mysql, Mysqli, Oracle, PostGress)
- Ya!
Y ahora empezamos a trabajar con los archivos .py de Django.
En nuestro directorio “blog” tenemos otro directorio llamdo “blog” (blog/blog) y dentro de este último un archivo llamado “settings.py“, debemos editar este archivo y configurar nuestro motor de base de datos preferido.
- Abrir “settings.py”, con el editor de texto preferido
- Modificar las líneas:
-
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'blog', 'USER': 'root', 'PASSWORD': '', 'HOST': '', 'PORT': '', } }
-
Vamos a explicar esto: empecemos con
ENGINE
, este parametro originalmente viene a medias, esto es, por defecto trae consigo
django.db.backends.
el cual solo espera que luego del punto (.) agreguemos nuestro motor de base de datos preferido, en nuestro caso hemos agregado únicamente la palabra “mysql“, ver un poco más de esto aquí.
NAME
como es de imaginarnos, este es el nombre de nuestra base de datos.
USER
que?, no lo dice?, referencia aquí
Luego de configurar nuestro motor de base de datos, debemos recordar, que antes o después de este paso, tenemos que crear o tener ya nuetra base de datos “blog” creada.
Conociendo las “APPS” por defectos instaladas:
Django trae pilas puestas (INSTALLED_APPS), y estas son:
- django.contrib.auth – Sistema de autentificación
- django.contrib.contenttypes – Framework interno para “tipos de contenidos”
- django.contrib.sessions - Framework interno para el manejo de sessiones
- django.contrib.sites - Framework para manejar multiples websites con una sola instalación de Django
- django.contrib.messages - Framework para mensajes (SUCESS – WARNING – ERROR)
- django.contrib.staticfiles - Framework para manejar archivos estáticos
Estas aplicaciones vienen incluidas por defecto gracias a que son de uso frecuente en cualquier aplicación web
Cada aplicación de estas crará una tabla en nuestra base de datos, asi que antes de ver, tratar, y usarlas debemos sincronizar nuestra base de datos, esto podemos hacerlo en este momento o al terminar de crear las aplicaciones siguientes, vamos a sincronizar nuestra base de datos, en este momento:
Estando dentro de nuestro directorio “blog” (Semana Python RD / blog) escribimos la siguiente línea de comando:
python manage.py syncdb

Debemos acostumbrarnos al uso de comandos cuando trabajamos con Django.
Como podemos ver en la ilustración, tendremos que hacer unas entradas para indicarles a django que deseamos crear un usuario administrador, a continuación nos pedira el username, un email y el password dos veces para terminar de sincronizar por primera vez nuestra base de datos, se debe aclarar, que esto sólo sucede cuando hemos dejado las APP’s por defecto, lo recomendable es dejarlas, ya que con ellas, tendremos un panel de administración creado sin tener que hacer el más mínimo esfuerzo.
Creando el blog
Es tiempo de entrar en materia, ya hemos cubierto la instalación y la primera sincronización de Django, ahora nos falta entrar en materia, diríamos, aún no hemos visto “nada” de Django…eeeiggghhhh.
python manage.py startapp posts
Y hemos creado nuestra primera “app” llamada “Posts”, esta será la encargada de manejar todo lo referente a nuestras entradas.
Ahora tenemos un nuevo directorio:
-
posts/
-
__init__.py
-
models.py
-
tests.py
-
views.py
-
El archivo en el cual debemos poner atención en este momento, es models.py, es quien se encargará de tener la estructura de nuestra(s) tabla(s), quien también se encagará del comportamiento de la data que estaremos guardando.
Creando los modelos para la app “POSTS”:
Anja!!!, no crean que le pondría aquí el código para que solo copien y peguen, nooooo!!, a escribir que es más interesante.
Ahora haremos lo mismo para nuestra app “CATEGORIAS”:
python manage.py startapp categorias
y la estructura de nuestra nueva app es:
-
categorias/
-
__init__.py
-
models.py
-
tests.py
-
views.py
-

Ya tenemos creadas las dos aplicaciones que vamos a utilizar en nuestro blog (posts y categorias), ahora nos toca decirle a Django que tenemos dos aplicaciones nuevas en nuestro proyecto, para esto, debemos editar el archivo
settings.py
(“Semana Python RD/blog/blog/settings.py)

Ahora que hemos agregado nuetras aplicaciones al settings, es momento de sincronizar nuevamente nuestra base de datos:
python manage.py syncdb
Y esto es lo que tenemos mientras se sincroniza todo:

Es momento de ver lo que tenemos hasta ahora, pero para esto, primero debemos editar el archivo
urls.py
(Semana Python RD/blog/blog/urls.py)

Lo que hicimos aqui:
- Descomentar las siguientes líneas (remover el simbolo #):
-
from django.contrib import admin
-
admin.autodiscover()
-
url(r'^admin/', include(admin.site.urls)),
-
Con esto le estamos diciendo a Django que nos prepare el panel de administración para nuestra aplicación con todo y url para accesarlo (url(r’^admin/’…))
Entonces, vamos a ver nuestro sitio web, para ello debemos ir via consola/terminar/CMD al directorio de nuestro blog (Semana Python RD/blog):
python manage.py runserver
Y esto es lo que debe mostrar la terminar/consola/CMD:

Seguido nos toca ir a ver el sitio web usando el navegador en la siguiente dirección:
http://127.0.0.1:8000/admin
Ya tenemos nuestor panel de administración creado, ahora podemos entrar y ver como funciona, debemos recordar que cuando hicimos la sincronización por primera vez, creamos un usuario administrativo, con este usuario podemos entrar al area privada de nuestro blog.
Y que tenemos en nuestro panel de adminsitración?, tenemos dos aplicaciones, la aplicacion “Auth” y la aplicación “Site”, en este momento no entraremos en detalles de estas dos aplicaciones, pero aquí ponemos dos enlaces para ilustrar un poco “Auth app” y “Site app”, recordemos que hace unos parrafos atrá dijimos que son aplicaciones por defecto de Django.
Oh wait, y dónde estan mis aplicaciones (Post y Categorias) ?
Oh esas, cierto, pues para tener disponible nuestras aplicaciones en el panel de administración, tenemos que decirle a Django, que poseemos dos aplicaciones y queremos usarlas con nuestro panel de administración, y aquí es donde creamos un archivo llamado admin.py dentro de nuestras aplicaciones:
Dentro del directorio Posts creamos un archivo de nombre
admin.py
y lo mismo hacemos dentro del directorio Categorias.
Asi deben lucir nuestros nuevos archivos:
admin.py para la aplicación Posts:

admin.py para la aplicación Categorias:

Luego de crear estos dos nuevos archivos, lo unico que nos queda, es reiniciar el servidor de Django, si todo ha ido bien, solo tiene que ir a la consola/terminal/CMD y presionar la combinación
Ctrl + C
y esto detendra el servidor, e inmediatamente volvemos a subir el servidor con
python manage.py runserver
Luego de esto, volvemos al navegador,
http://127.0.0.1:8000/admin
, refrescamos para ver los cambios

Ohh my Godddd!!, you see that?!!, ahora nos toca escribir unos cuantos posts, crear una que otra categoria
, vamos, es fácil

Y aquí las categorías:

Ok, ya tengo el panel de administración y ahora qué?
Cierto!!!!, ahora tenemos que hacer la parte pública de nuestro blog, no hay chiste en tener un blog y escribir entradas sin que el público tenga acceso a dichas entradas.
Es tiempo de trabajar con las vistas y los templates de nuestra applicación así como también con nuestras cómodas urls.
Vistas, Views.py
No, hoy no daremos clases sobre MVC, o MVT en el caso de Django, asi que, bye bye…
Empecemos con abrir el archivo
views.py
en la aplicación Posts (Semana PythonRD/blog/posts), este archivo tendrá el siguiente contenido (el contenido de las dos siguientes imágenes):

-

Bien!, ya tenemos nuestras vistas para la aplicación Posts, ahora vamos hacia la applicación Categorías, abrir el archivo
views.py
en la aplicación Categorías (Semana PythonRD/blog/categorias)
Bien, ya tenemos nuestra vistas ready, ahora nos toca crear los html (templates) en el caso de Django.
Templates:
Si, Templates, problem??, los html(s) a crear son los siguientes:
- 404.html
- base.html
- blog.html
- categorias.html
- index.html
- post.html
- post_categoria.html
Son pocas, y rapidas de hacer, aqui estan todos los html a copiar (venga haga copy/paste si usted es un leon):
base.html
404.html
blog.html
categorias.html
index.html
post.html
post_categoria.html
Ok!!, contento?!, venga diga que si!.
Urls.py
Por último, nos falta una parte importante, y es nuestro querido
urls.py
y, es aquí, nuestro ultimo archivo:

Referencia al directorio de los templates (html)
Para que Django encuentre nuestros templates (html), tenemos que decirle donde estan ubicados, en este caso, debemos editar nuestro archivo settings.pyy buscar la siguiente linea:
TEMPLATE_DIRS
y sustituir por la siguiente:
import os TEMPLATE_DIRS = (os.path.join(os.path.abspath(os.path.dirname(__file__)),'templates'),)
404!! WOW
No es tan grave, pero si super nice!!!, solo tenemos que tener un html llamado 404.html y poner en False la siguiente linea
DEBUG = True
la cual es la 3era linea de el archivo settings.py.
Y, eso es todo amigos, hemos terminado nuestra aplicación utlizando Python y Django.
Asi debe estar nuestor blog
Descarga
Para esos que no quiere escribir aqui les dejo el proyecto, ready para usar: Descargar Blog App
Viene nota pa los curiosos que tienen experiencia: Herman@s, si, algunas cosas no son explicadas, ya que es un tutorial meramente introductorio, de igual forma, tambien sabemos que una buena practica para trabajar con Django es usar virtual enviroments, pero, esas cositas, podrian ustedes agregarlas o hacer un tutorial mas avanzado?..mientras yo hago otro.?
Por otro lado, los acentos no son de mi agrado, los uso como deseo.
Gracias, Saludos.


























