Django: Creación de un sitio básico con Admin
Con todo el rollo de la mudanza me he dado cuenta de que no he escrito ningún artículo sobre Django. Estaba convencido de haberlo hecho. Así que voy a tener que arreglar el problema XD
Qué es
Django es un framework para la creación de aplicaciones web. Se centra en el backend, ofreciendo plantillas para el frontend, aunque para este último seguramente utilicemos otro framework adicional tipo JQuery , Dojo , Mootools , Prototype , etc.
Instalación
Podemos instalarlo utilizando easyinstall , aunque es paquete Debian . Se puede aislar la instalación de un site Django, con el fin de replicarla fácilmente.
Creación
Vamos a crear un CMS pequeñito. Va a tener blogs y nada más. Para ello, lo primero será decirle a Django que nos cree el sitio:
|
|
Antes de seguir, configuraremos la BBDD, modificando el archivo settings.py
, en el que indicaremos la BBDD a utilizar. Aprovechamos también para indicar en las aplicaciones instaladas que queremos utilizar “admin” y nuestro nuevo modulo:
|
|
Dejad el resto de entradas como estén.
Con esto ya podemos ejecutar el servidor, aunque servirá poco:
|
|
Y ya podemos abrir el site, que se encuentra en https://127.0.0.1:8000/
El modelo
Editaremos el modelo (blog/models.py
), donde estableceremos un modelo muy básico:
|
|
Como se ve, tendremos un título y un cuerpo. De momento no nos hace falta nada más.
URLs
Ahora vamos a modificar el archivo urls.py
. Este archivo se utiliza para que django sepa qué debe hacer para cada URL que se le solicita. Por eso trabaja con expresiones regulares, de manera que pueda identificar qué servicio o HTML debe procesar en cada caso. Nosotros necesitamos descomentar las líneas correspondientes a django-admin (archivo urls.py
):
|
|
Administración
Vamos a configurar la herramienta de administración, para poder editar nuestras entradas. Para ello utilizaremos el archivo blog/admin.py
|
|
La vista
En el archivo de URLs indicamos que, ante la URL blog/
, veríamos *blog.views.list
. Aún no hemos definido esto, y lo haremos en el archivo admin/views.py
:
|
|
Con esto acabamos de crear una dependencia: blog/list.html
. En este caso, necesitaremos crear una plantilla. Las plantillas no van con nuestro proyecto, sino que las deberíamos poner a parte. Cuando se construye un sitio Django, los módulos van por un lado, cada uno de ellos lo más aislado posible del resto. Si es posible, no deberían tener dependencias entre ellos (si es posible, insisto). Serán las plantillas las que le den homogeneidad y unión a todo el site. En la el archivo ‘settings.py’ establecimos una ruta para TEMPLATE_DIRS
. Ahí es donde crearemos nuestro archivo blog/list.html
:
|
|
Al llamar a nuestra plantilla creamos la variable post_list
que estamos recorriendo en la plantilla y pintando de la forma adecuada.
Cómo usarlo
¡¡Ya lo tenemos todo montado!! Ehmmm… y ahora… ¿qué?
Bueno, pues vamos a usarlo. Primero vamos a asegurarnos de que la base de datos está actualizada y vamos a ejecutar el servicio:
|
|
Vale, ya está funcionando. Ahora nos vamos a la URL que nos dice: https://127.0.0.1:8000 , lo que nos dará un bonito error de página no encontrada. Como tenemos habilitado el depurado, vemos lo que ha ocurrido: la URL solicitada no se ajusta a ninguno de los patrones definidos.
Vamos primero con la interfaz de administración: https://127.0.0.1:8000/admin . Nos pedirá contraseña (la que pusimos al hacer el primer syncdb) y entramos en la parte de administrador. Deberíamos ver 3 bloques:
- Auth
- Blog
- Sites
Si es así, es que lo hemos hecho todo bien. Creamos un par de posts en el módulo “Blog”. No tiene pérdida.
Toda esta interfaz de administración se ha creado automáticamente gracias a que hemos incorporado django-admin
.
¿Ya tenemos los 2-3 posts? Bien. Vamos ahora a la URL de visualización: https://127.0.0.1:8000/blog . Poco que decir aquí, salvo que deberíamos estar viendo nuestro blog :D
Más información
Evidentemente, el estupendo tutorial de django :D.
Despedida
Si veo que tiene tirón, quizá un día de estos continúe este pequeño manual. Hay muchas cosas que se pueden hacer aún:
- Paginar las entradas cuando haya muchas.
- Crear una interfaz CRUD para no tener que editar los Posts desde la interfaz de administración, sino desde el propio site.
- Darle color al sitio.
- Añadir Tags a los Posts.
- Ordenar por fecha de publicación.
- Gestionar usuarios.
- Añadir pruebas.
- [Dele rienda suelta a su imaginación y ponga aquí su deseo.]