martes, 2 de abril de 2013

Tutorial Django: Hola Mundo, primer proyecto y aplicación

En el siguiente tutorial Django intentaré explicar de una forma sencilla como empezar desde cero con Django. Haremos una simple página en la que ponga Hola Mundo.

El primer paso es tener instalado en nuestro ordenador Python y Django. Una vez los tengamos instalados vamos a empezar:


Lo primero es crear un nuevo proyecto con Django:

1.- Abrimos una nueva consola y nos situamos donde queramos que nos cree el proyecto, en mi caso me situaré en el escritorio.

2.- Lanzamos el comando:

django-admin.py startproject proyecto1




(En proyecto1 le daremos el nombre que queramos que lleve nuestro proyecto).

3.- Una vez ejecutado el comando (puede tardar unos segundos) nos habrá creado en nuestro escritorio una carpeta llamada proyecto1. 

Esta carpeta contendrá un archivo manage.py (otra carpeta dentro llamada también proyecto1
La nueva carpeta proyecto1 contendrá 4 archivos (los iremos viendo a medida que los vayamos utilizando):

Una vez creado nuestro proyecto, crearemos dentro una aplicación Django. Para ello:

1.- Abrimos la consola y nos ubicamos en la carpeta de nuestro proyecto, en mi caso en Escritorio/proyecto1/

2.- Lanzamos el siguiente comando:

python manage.py startapp aplicacion1



(En aplicacion1 le daremos el nombre que queramos que lleve nuestra aplicación).

3.- Una vez ejecutado el comando, dentro de nuestra carpeta proyecto1 nos habrá creado la carpeta aplicacion1 con los siguientes archivos (iremos viéndolos a medida que avancemos):

Ya tenemos creado nuestro proyecto llamado proyecto1 y una primera aplicación llamada aplicacion1.

Vamos a empezar a editar archivos:

Abrimos nuestro editor favorito y en él el archivo settings.py de la carpeta proyecto1
Editaremos unicamente los parámetros principales para poder hacer correr nuestra aplicación (al hacer únicamente un hola mundo no editaremos los datos de bases de datos):

- Modificaremos TIME_ZONE = 'America/Chicago'
El comentario superior a esta línea de django nos proporciona la url http://en.wikipedia.org/wiki/List_of_tz_zones_by_name para que busquemos nuestra zona horaria y la pongamos

- Modificaremos LANGUAGE_CODE = 'en-us'
El comentario superior a esta línea de django nos proporciona la url http://www.i18nguy.com/unicode/language-identifiers.html para que busquemos nuestro código de lenguaje

-Modificaremos TEMPLATE_DIRS Aquí tendremos que especificar la url donde se encontrará la carpeta que contenga las plantillas que usaremos en nuestro proyecto. La dirección ha de ponerse con rutas absolutas. Lo primero que haremos será crear una nueva carpeta llamada "plantillas" dentro de la carpeta proyecto1/proyecto1
Ahora tendríamos que poner en TEMPLATE_DIRS la dirección de esta carpeta, pero lo haremos de una forma distinta. Haremos para que python detecte directamente la url, ya que si utilizamos windows y linux, las rutas cambiarán y tendríamos que estar cambiando esta url cada vez. Para ello vamos al inicio de nuestro archivo settings.py e introducimos las siguientes líneas:


import os
ruta_proyecto=os.path.dirname(os.path.abspath(__file__))




A través de ruta_proyecto podremos acceder a plantillas, ya sea en linux o windows. Iremos de nuevo a TEMPLATE_DIRS y lo modificaremos de forma que quede:

TEMPLATE_DIRS = (
     os.path.join(ruta_proyecto,'plantillas'),
)

os.path.join hará una unión entre la ruta del proyecto y la carpeta que le pasemo, en este caso "plantillas".


-Modificaremos STATICFILES_DIRS Aquí especificaremos la ruta donde se encuentran los archivos estáticos que no vamos a modificar, como pudieran ser imágenes, librerías, videos...
Lo haremos de forma similar a TEMPLATE_DIRS. Para ello en la carpeta proyecto1 crearemos una carpeta llamada "static"
STATICFILES_DIRS nos tendrá que quedar de la siguiente manera:

STATICFILES_DIRS = (
        os.path.join(ruta_proyecto,'static'),
)

También podríamos haber situado las carpetas plantillas y static en nuestra carpeta Escritorio/proyecto1 y en ruta proyecto poner para windows:
ruta_proyecto=os.path.join(os.path.dirname(os.path.abspath(__file__)),"/users/****/desktop/proyecto1/")
o para linux:
ruta_proyecto=os.path.join(os.path.dirname(os.path.abspath(__file__)),"..")

En el archivo settings.py no modificaremos nada más de momento.



Vamos a iniciar nuestro servidor. Para ello:
1.- Abrimos de nuevo la consola y nos situamos en la carpeta proyecto1. En mi caso escritorio/proyecto1
2.- Lanzamos el siguiente comando:

python manage.py runserver

3.- Abrimos un navegador y accedemos a la url http://127.0.0.1:8000/

Django está corriendo correctamente, por lo que vamos a crear una primera página.

Para hacer nuestra primera página vamos a modificar el archivo views.py de nuestra carpeta aplicacion1. De  momento lo único que tiene este archivo es un comentario: # Create your views here.
En views.py introduciremos el siguiente código


# Create your views here.
from django.http import HttpResponse

def mostrarTexto(request):
    return HttpResponse('<h1>Hola Mundo</h1>')


Lo que estamos haciendo es importar la función HttpResponse y crear una función/vista llamada mostrarTexto que nos va a imprimir Hola Mundo

Modificaremos ahora el archivo urls.py de nuestra carpeta proyecto1. En este archivo, en urlpatterns, configuraremos las url mediante las cuales vamos a acceder a nuestras páginas. Vienen comentados algunos ejemplos para ver su uso. Si queremos que cuando accedamos a nuestra página principal se nos muestre el mensaje Hola Mundo que habíamos creado anteriormente:


from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
    url(r'^$', 'aplicacion1.views.mostrarTexto'),
    # r'^$' nos indica que estamos haciendo referencia al index de nuestro proyecto
    # aplicacion1 es el nombre de nuestra aplicacion, views el archivo que contiene todas las vistas y mostrarTexto es el nombre de la vista que queremos mostrar
)

Si volvemos al navegador y recargamos, se nos tendrá que mostrar el mensaje:
Si quisiéramos que este mensaje se nos mostrara en la url http://127.0.0.1:8000/mensajes nuestro archivo urls.py quedaría de la siguiente manera:


from django.conf.urls import patterns, include, url

urlpatterns = patterns('',
  url(r'^mensaje/', 'aplicacion1.views.mostrarTexto'),

)

Si entrásemos ahora a http://127.0.0.1:8000/ nos daría un error 404 ya que no hemos especificado una vista para esa url


Parte 1.- Tutorial Django: Hola Mundo, primer proyecto y aplicación
Parte 2.- Tutorial Django: Crear plantillas
Parte 3.- Tutorial Django: Formularios con base de datos I
Parte 4.- Tutorial Django: Formularios con base de datos II

1 comentario:

  1. Muy interesante la opción de las url personalizadas, muy bueno para el SEO.

    Saludos!

    ResponderEliminar