En este post recrearé la idea del tutorial del sitio de django, simplificandolo al máximo para que puedan tomarle el gusto a este excelente framework en pocos minutos. Al igual que en el ejmeplo del sitio de django crearé una aplicación de encuestas. Esto se debe a que es una aplicación simple, intuitiva y usable. Asumiré que estarán usando la version 1.02 del framework (la pueden descargar aquí) y cualquier versión de python superior a la 2.5.x (django aún no es compatible con la 3.0).
Creando un proyecto
Para crear un proyecto de django se deben seguir ciertos pasos iniciales que se encargaran de configurar nuestra aplicación en su ambiente de ejecución (configuración propia de djang, de la base de datos y de la aplicación en si). Recomiendo que creen un directorio “proyectos-django” (o como quieran llamarle) y se situen en el mismo. Una vez hecho esto ejecuten el siguiente comando:
django-admin.py startproject sitio-encuestasNuevamente asumiré que el proceso de instalación tanto de django como de Python es correcto (si no lo es no podrán utilizar el comando django-admin.py). Este comando creará un sub-directorio de “proyectos-django” llamado sitio-encuestas con la siguiente estructura:
sitio-encuestas/
__init__.py
manage.py
settings.py
urls.pyLos archivos son:
- _init_py: Un archivo encargado de comunicarle al interprete de Python que el directorio actual es un paquete.
- manage.py: Una herramienta propia del framework que nos permitirá ejecutar varias tareas vinculadas al mismo.
- settings.py: Configuración del proyecto actual.
- urls.py: El archivo encargado de manejar la “tabla de contenidos” del proyecto. El encargado de manejar la navegación del sistema.
Configurando la aplicación
Para este ejemplo editaremos el archivo settings.py cambiando las siguientes lineas:
DATABASE_ENGINE=sqlite3 DATABASE_NAME=/home/usuario/proyectos-django/sitio-encuestas/base
Unicamente se cambian estas líneas ya que para el ejemplo utilizaré sqlite como base de datos y la misma no requiere url del servidor ni usuario y contraseña (para esta guía al menos). Una vez editado este archivo debemos crear la base de datos con el siguiente comando:
python manage.py syncdb
Notar el uso del archivo manage.py, el cual fue mencionado anteriormente. Ahora que el proyecto esta configurado crearemos una “aplicación” para el mismo. La aplicación en cuestión se llamará “encuestas”.
python manage.py startapp encuestas
Esto creará el siguiente directorio:
encuestas/
__init__.py
models.py
views.pyEn el directorio de la aplicación django creó 3 archivos, el archivo que indica a Python que es un paquete propio, el archivo models.py donde se definirá el modelo de clases de la aplicación y el archivo views.py encargado de definir las vistas (que veremos más adelante). Editemos el archivo models.py para que se vea así:
from django.db import models class Encuesta(models.Model): pregunta = models.CharField(max_length=200) fecha_pub = models.DateTimeField('fecha de publicación') def __unicode__(self): return self.pregunta class Opcion(models.Model): encuesta = models.ForeignKey(Encuesta) opcion = models.CharField(max_length=200) votos = models.IntegerField() def __unicode__(self): return self.opcion
No explicaré en detalle este archivo por dos motivos, 1) se puede leer en la guía oficial y 2)creó que es bastante intuitivo. Una vez creado el modelo debemos activarlo con el framework. Para esto debemos editar el archivo de configuración settings.py del directorio sitio-encuestas/ y agregar en INSTALLED_APPS la línea ’sitio-encuestas.encuestas’. Esta sección del archivo debería verse así:
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'sitio-encuestas.encuestas' )
Ahora el framework sabe que el proyecto contiene a la aplicación “encuestas”. Para impactar este modelo sobre la base de datos lo único que se debe hacer es:
python manage.py sql encuestas
Esto hará que veamos el siguiente código SQL:
BEGIN; CREATE TABLE "encuestas_encuesta" ( "id" serial NOT NULL PRIMARY KEY, "pregunta" varchar(200) NOT NULL, "fecha_pub" timestamp WITH time zone NOT NULL ); CREATE TABLE "encuestas_opcion" ( "id" serial NOT NULL PRIMARY KEY, "encuesta_id" integer NOT NULL REFERENCES "encuestas_encuesta" ("id"), "opcion" varchar(200) NOT NULL, "votos" integer NOT NULL ); COMMIT;
Y si estamos seguros de que con este código SQL queremos crear las tablas, ejecutamos:
python manage.py syncdb
Para impactarlos contra la base de datos real. Con esto ya tenemos una aplicación completamente persistente en nuestras manos. Si acceden al shell de Python y juegan con las clases, pueden crear y persistir objetos Encuesta y Opcion. En la siguiente página veremos como se maneja la administración web que nos brinda el framework.
