Comunidad de diseño web y desarrollo en internet

Python en la web con Django (II): creando nuestro proyecto

Después de realizar todas las instalaciones básicas en la anterior entrega del tutorial Python en la web con Django, vamos a crear nuestro primer proyecto web. Estudiaremos un poco la estructura que se genera al crear un proyecto con Django y cómo arrancar nuestro servidor.

Creando el proyecto con django-admin


Primero tendremos que crear nuestro proyecto. Para ser ordenados crearemos antes un directorio y nos desplazaremos a él para comenzar. Después con la herramienta django-admin creamos el proyecto:

Código :

alberto@a-AMILO-Si-3655:~$ mkdir django
alberto@a-AMILO-Si-3655:~$ cd django
alberto@a-AMILO-Si-3655:~/django$ django-admin startproject tutorial

Después de la instalación que hicimos de Django, deberíais tener el comando django-admin en el PATH del sistema. ¿Qué quiere decir eso? Que tendremos el comando en el directorio /usr/local/bin. En el caso de que no lo tengais en esta ruta, el comando anterior devolverá error por lo que tendremos que hacer un link simbólico. Si alguien tiene este problema que comente y le ayudaremos.

Vamos a ver qué es lo que ha hecho la herramienta django-admin:

Código :

alberto@a-AMILO-Si-3655:~/django$ ls -tlr tutorial
total 16
-rw-r--r-- 1 alberto alberto    0 2012-02-01 13:15 __init__.py
-rw-r--r-- 1 alberto alberto  571 2012-02-01 13:15 urls.py
-rw-r--r-- 1 alberto alberto  503 2012-02-01 13:15 manage.py
-rw-r--r-- 1 alberto alberto 5035 2012-02-01 13:15 settings.py

Expliquemos qué significa todo esto:

  • __init__.py : archivo que le indica a python que este directorio es un paquete python de, por ejemplo, grupo de módulos.
  • settings.py : contiene toda la configuracion de nuestro proyecto.
  • manage.py : contiene todas los comandos disponibles para poder trabajar con nuestro proyecto(incluso por shell).
  • urls.py : contiene la declaracion de las urls posibles para nuestro proyecto. Es una tabla de contenidos.


Aunque ahora no os quede muy claro para qué sirve cada fichero, no os preocupéis que pronto lo entenderéis.

Iniciando Django


Vamos a arrancar nuestro servidor para confirmar que está trabajando correctamente. Para ello entramos en el directorio de nuestro proyecto y ejecutamos lo siguiente:

Código :

alberto@a-AMILO-Si-3655:~/django$ cd tutorial
alberto@a-AMILO-Si-3655:~/django/tutorial$ python manage.py runserver
Validating models...

0 errors found
Django version 1.3.1, using settings 'tutorial.settings'
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.

Veamos la salida que nos ha devuelto:

  • Validating models : el servidor valida que el modelo de datos sea correcto. Nosotros no tenemos, al menos de momento, así que sin errores.
  • 0 errors found : errores de sintáxis encontrados. Si tenemos errores sin poner código me tiro por la ventana.
  • Django version 1.3.1, using settings 'tutorial.settings' : versión de django que usamos y el fichero de configuracion que utiliza en el arranque. Vemos que el patrón que sigue es "nombre_proyecto.fichero".
  • Development server is running at http://127.0.0.1:8000/ : nos indica que el servidor está corriendo en la dirección que se ve, por defecto escucha en el puerto 8000.
  • Quit the server with CONTROL-C : para detener nuestro servidor basta con pulsar CONTROL+C o cerrar la ventana de la terminal.


He de advertir que Django no es un servidor recomendable para un entorno de producción, incluso al arrancar te indica que es de desarrollo. Django no está preparado para grandes cargas de trabajo por lo que para tu web recomiendo usar uno con mayor capacidad como por ejemplo Apache. Un día reservaré un tutorial para migrar el proyecto a apache con mod_python.

Bueno para ver que tal nos está quedando basta con ir al navegador y pedirle la url http://127.0.0.1:8000/ Veremos algo como esto:



Esta es la pantalla DEBUG de Django. Ahora mismo no tenemos nada y por defecto se muestra esta ventana apastelada. Por simple curiosidad fijaros en lo que dice la ultima línea...os doy una pista:

Código :

alberto@a-AMILO-Si-3655:~/django/tutorial$ grep DEBUG settings.py
DEBUG = True
TEMPLATE_DEBUG = DEBUG


Mas adelante veremos mas opciones de esta ventana y como deshabilitarla (poco recomendable en desarrollo) si no nos gusta.

Si volvemos al terminal donde arrancamos el servidor podemos ver una linea mas:

Código :

[01/Feb/2012 06:53:59] "GET / HTTP/1.1" 200 2055

Este es el registro de acceso a nuestro servidor, en este caso por nosotros mismos, y el resultado con el que ha terminado la peticion ademas del tiempo empleado.

Iniciando Django para escuchar en otra dirección


Una de las posiblidades que nos da también la opción "runserver" es decirle a django en que dirección y puerto debe quedarse escuchando:

Código :

alberto@a-AMILO-Si-3655:~/django/tutorial$ python manage.py runserver 9000
Validating models...

0 errors found
Django version 1.3.1, using settings 'tutorial.settings'
Development server is running at http://127.0.0.1:9000/
Quit the server with CONTROL-C.

Código :

alberto@a-AMILO-Si-3655:~/django/tutorial$ python manage.py runserver 0.0.0.0:12000
Validating models...

0 errors found
Django version 1.3.1, using settings 'tutorial.settings'
Development server is running at http://0.0.0.0:12000/
Quit the server with CONTROL-C.



Tenemos todo instalado, tenemos creado nuestro proyecto y tenemos iniciado el servidor correctamente, ¿alguien tiene ganas de programar? En el próximo capítulo codearemos nuestro primer "Hola mundo" y estudiaremos el mapeo de urls.

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate