Cargando



Django - Resolviendo Vistas y URLs

En este tutorial veremos cómo trabajan los decorators para hacer las resoluciones dentro de nuestra aplicación en Django.


mar 23 2014 04:45
Profesional
mar 24 2014 18:40
Las vistas y las URL no son llamadas directamente por nuestro código, esto es debido a la naturaleza dinámica de las aplicaciones, la razón es que mientras más genérica sea la forma, es posible utilizarla en muchos más casos.

Entonces la forma correcta es utilizar las diversas funciones que nos permiten resolver las rutas ya sea desde una vista a una URL o desde una URL a una vista, para ello contamos con algunas herramientas llamadas decorators.

Resolviendo de URL a Vistas

Las vistas, por prácticas recomendadas no son llamadas directamente por nuestro código, si no que son invocadas a través de llamados en la URL, dichos llamados son procesados y servidos por el sistema despachador de Django.

Uno de los aspectos claves en este punto, es que Django utiliza las expresiones regulares para realizar la construcción de la URL que llamará a nuestra vista, gracias a esto podemos pasar diferentes parámetros y con ello añadir funcionalidades a nuestras vistas.

Un patrón de URL contiene los siguientes aspectos:
  • La expresión regular que nos permite capturar la URL que hemos colocado como patrón.
  • Una referencia a la vista que será llamada.
  • Un diccionario de argumentos que se pasará cada vez que la vista sea llamada.
  • Un nombre que será utilizado como referencia para poder hacer llamados reversos de la vista.
Resolviendo Vistas a URL

Dentro de nuestras aplicaciones muchas veces tenemos que llamar otras vistas o recursos a través de URL, sin embargo copiar de forma rígida o hacer hardcode de dichas URL no es una buena práctica, ya que si por ejemplo existe un cambio en nuestro programa imaginemos tener que cambiar 20 o 30 referencias a una URL, para ello podemos utilizar diferentes métodos para poder hacer que nuestra aplicación busque la URL sin tener que copiarla, uno de estos métodos es utilizar el decorator Permalink que podemos ver en el siguiente punto.

El decorator Permalink

Dentro de cada modelo tenemos acceso al método get_absolute_url() que nos permite acceder a una página de detalle de un objeto directamente sin tener que necesitar saber como debe estar construida la URL, sin embargo este método no nos permite pasar argumentos ya que es solo un link devuelto.

Para poder extender la funcionalidad tenemos la posibilidad de utilizar y retornar parámetros como si fueran del método get_absolute_url().

Para ello debe seguir la siguiente estructur:
  • El primer valor es el nombre de la vista a ser llamada, si la vista tiene un nombre debe utilizarse, en caso contrario podemos utilizar el import path de la vista. Este valor es siempre requerido.
  • El segundo valor es una tupla de argumentos posicionales que deberían ser aplicados a la vista, en caso de no poseer podemos dejar este parámetro en blanco.
  • El tercer valor es un diccionario uniendo argumentos con sus valores respectivos, dichos valores deben ser pasados a la vista, en caso que la vista no reciba nada podemos excluir este valor del llamado.
Veamos a continuación como trasladamos esto en un código en Django, para ello vamos a incluir el uso del decorator en un modelo:


django_vistas_url.jpg


Como vemos en el código de la imagen, llamamos a la vista library_article detail, el segundo valor lo pasamos vacío ya que no es necesario y en el tercer valor indicamos que el object_id debe ir atado al self.id es decir, al id del propio modelo, luego en la última línea hacemos uso del decorator.

¿Te ayudó este Tutorial?


Sin comentarios, sé el primero!

No esperes más y entra en Solvetic
Deja tus comentarios y aprovecha las ventajas de la cuenta de usuario ¡Únete!

X