Noticias Weblogs Foros Wiki Código

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

4 bits blog

Las vistas de django

Marzo 23rd, 2010 - [Enlace local]

En el anterior post sobre los modelos de django, se explicaba cómo se crean los modelos de datos que se usan con la base de datos, pero no se vio ningún modo de trabajar con ellos a parte de la consola de django.

Las vistas

Las vistas se encargan de la capa lógica de la aplicación web, esto es realizan las tareas necesarias sobre los datos recibidos y devuelven los datos necesarios para que se muestren en la web.

En el caso de django, las vistas son funciones de python que reciben un objeto HttpRequest y que devolverán un objeto HttpResponse. Estas funciones se relacionarán con diferentes direcciones de la aplicación web, gracias al archivo «urls.py».

Creando una vista

Como ya se explicó brevemente en el post de introducción a django, las vistas se definen en el archivo «views.py» de la aplicación a desarrollar.

Siguiendo con el ejemplo del modelo de un usuario, se podrían definir las siguientes vistas:

# views.py
# -*- coding: utf-8 -*-

from proyecto.aplicación.models import Usuario
from django.shortcuts import render_to_response

def mostrar (request):
    """Muestra los datos de los usuarios de la base de datos."""

    usuarios = Usuario.objects.all ()
    return render_to_response ('mostrar.htm',
                               { 'usuarios' : usuarios })

En este ejemplo se ha definido una vista para mostrar todos los usuarios de la base de datos, para ello se puede ver que se hace uso de un «QuerySet» (explicado en el post sobre los modelos de django).

Además, se puede observar que la función de la vista recibe un parámetro request (que será un objeto HttpRequest) y devuelve un objeto HttpResponse mediante la función render_to_response, que genera una página HTML a partir de una plantilla y los datos que se le proporcionen mediante un diccionario (en este ejemplo el diccionario sólo contendrá los usuarios de la base de datos).

Asociando direcciones a las vistas

Una vez creadas las funciones de las vistas, éstas se deberán asociar con sus correspondientes direcciones dentro de la aplicación web, todo esto se realiza editando el archivo «urls.py». Este archivo contiene, básicamente, una variable llamada urlpatterns a la que se asignan una serie de tuplas de expresiones regulares que definen las direcciones y sus funciones asociadas.

Siguiendo el ejemplo, la aplicación tendría el siguiente archivo «urls.py»:

# urls.py
# -*- coding: utf-8 -*-

from django.conf.urls.defaults import *

urlpatterns = patterns('',
    (r'^usuario/mostrar/$', 'proyecto.aplicación.views.mostrar'),
)

El archivo «urls.py» se crea a nivel de proyecto, pero se puede dividir en varios, de modo que se puedan definir las direcciones a nivel de aplicación para una mayor modularidad y reutilización.

Como siempre, para más información se puede consultar la documentación sobre cómo asociar direcciones a las vistas en django.

Una breve introducción a las plantillas

Django usa un lenguaje de plantillas para generar las páginas web de la aplicación, estas plantillas son archivos HTML con algunas etiquetas propias de Django, que éste procesará y sustituirá por el contenido adecuado. Las etiquetas del lenguaje de plantillas de django permiten hacer muchas cosas, como: bucles, condiciones, herencia de plantillas, internacionalización, …

Los archivos de las plantillas se pueden crear a nivel de proyecto o de aplicación. Normalmente, se suele crear una plantilla base de la que se heredará la estructura en las plantillas de las diferentes aplicaciones del proyecto, de modo que éstas tengan una mayor modularidad.

Estos archivos se pueden guardar en cualquier directorio dentro del proyecto y/o aplicación, pero por conveniencia se suelen crear directorios llamados «templates» a nivel de proyecto y aplicación, además django suele buscar en estos directorios de forma predeterminada, mientras que si se les da otro nombre, se deberán configurar las rutas de estos directorios en el archivo «settings.py».






    

    {% if usuario %}
        Lista de usuarios
    {% else %}
        No hay ningún usuario
    {% endif %}





    {% if usuarios %}

        {% for usuario in usuarios %}
        

{{ usuario.email }}

{{ usuario.nombre }} {{ usuario.apellidos }}

{% endfor %} {% else %}

No hay ningún usuario.

La base de datos de usuarios está vacía.

{% endif %}

En este ejemplo se puede ver que la plantilla trata la lista de usuarios que recibe de la vista y muestra cada usuario, o un mensaje de error si la lista no tuviera ningún usuario. El lenguaje de las plantillas de django intenta ser lo más parecido a Python, siempre que no tengamos en cuenta las llaves y los porcentajes necesarios para marcar las etiquetas de la plantilla.

Para más información se puede consultar la documentación sobre el lenguaje de las plantillas de django.

» Leer más, comentarios, etc...

Información legal y técnica