Lo primero que haremos es crear una página web que muestre la fecha y la hora actual. Este es un buen ejemplo de una página dinámica, porque el contenido de la misma no es estático — al contrario, los contenidos cambian de acuerdo con el resultado de un cálculo (en este caso, el cálculo de la hora actual). Este simple ejemplo no involucra una base de datos cualquier tipo de entrada del usuario, sólo muestra la salida del reloj interno del servidor.
Para crear esta página, crearemos una función de vista. Una función de vista, o vista en pocas palabras, es una simple función de Python que toma como argumento una petición Web y retorna una respuesta Web.
Esta respuesta puede ser el contenido HTML de la página web, una redirección, o un error 404, o un documento XML, o una imagen... o en realidad, cualquier cosa. La vista en sí contiene toda la lógica necesaria para retornar esa respuesta. El código puede encontrarse donde quieras, mientras que se encuentre dentro de tu Python path.
No hay otro requerimiento — no hay "magia", por así decirlo. Por poner el
código en algún lugar, creemos un archivo llamado views.py
en el
directorio mysite
, el cual creamos en el capítulo anterior.
Esta es la vista que retorna la fecha y hora actual, como un documento HTML:
from django.http import HttpResponse
import datetime
def current_datetime(request):
now = datetime.datetime.now()
html = "<html><body>It is now %s.</body></html>" % now
return HttpResponse(html)
Repasemos el código anterior línea a línea:
- Primero, importamos la clase
HttpResponse
, la cual pertenece al módulodjango.http
. Para ver más detalles de los objetosHttpRequest
yHttpResponse
puedes consultar el Apéndice H. - Luego importamos el módulo
datetime
de la librería estándar de Python, el conjunto de módulos útiles que vienen con Python. El módulodatetime
contiene varias funciones y clases para trabajar con fechas y horas, incluyendo una función que retorna la hora actual. - A continuación, definimos la función llamada
current_datetime
. Esta es una función de vista. Cada función de vista toma como primer argumento un objetoHttpRequest
, al que típicamente se le asigna el nombrerequest
. Nota que el nombre de la función de vista no importa; no tiene que ser nombrada de una determinada manera para que Django la reconozca. La llamamoscurrent_datetime
aquí, porque el nombre indica claramente lo que hace, pero se podría llamarsuper_duper_awesome_current_time
, o algo más repugnante. A Django no le interesa. La siguiente sección explica cómo Django encuentra esta funcion. - La primera línea de código dentro de la función calcula la fecha/hora
actual, como un objeto
datetime.datetime
, y almacena el resultado en la variable localnow
. - La segunda línea de código dentro de la función construye la respuesta
HTML usando el formato de cadena de caracteres de Python. El
%s
dentro de la cadena de caracteres es un marcador de posición, y el signo porcentaje después de la cadena de caracteres, significa "Reemplaza el%s
por el valor de la variable now.". (Sí, el HTML es inválido, pero estamos tratando de mantener el ejemplo simple y corto) - Por último, la vista retorna un objeto
HttpResponse
que contiene la respuesta generada. Cada función de vista es responsable de retornar un objetoHttpResponse
. (Hay excepciones, pero lo haremos más adelante)