URL
Antes de ver como incorporamos las URL en nuestras aplicaciones, vamos a refrescar el concepto de URL, su nombre corresponde a las siglas de Uniform Resource Locator o localizador uniforme de recursos.
Esto corresponde a direcciones que de unos esquemas de conexión conforman un formato único, gracias a esto podemos acceder a través de los diferentes protocolos como HTTP, HTTPS.
Configuración Estándar
Una vez que ya refrescamos un poco el concepto de URL podemos pasar a como manejamos esto en Django.
En Django no contamos con una herramienta que nos genere automáticamente las URLs, o que las vaya descubriendo por sí mismo, sino que tenemos que realizar una configuración, para indicarle a que recurso va a llamar cada URL que necesitemos.
Aunque pueda parecer una desventaja frente a otras tecnologías, realmente no lo es, simplemente es una forma de darnos el control total de la aplicación, así podemos definir nosotros realmente las URLs que queremos y no dejamos esto al framework para que lo haga según sus parámentros como puede pasar en otros lenguajes y otras tecnologías.
Para configurar las URLs tenemos la función patterns(), con esta función podemos construir nuestro mapa de URLs, de esta forma definimos a donde y como nos va a llevar cada dirección en nuestro proyecto.
En la siguiente imagen vemos un extracto de como luce esta función aplicada en un proyecto:
Si nos fijamos bien podemos desglosar este código, vemos que cada una de las expresiones es una tupla, dentro de dicha tupla la primera parte es una expresión regular que coincide con la URL y la segunda parte es la llamada a la vista correspondiente, opcionalmente como podemos notar en la tercera tupla del ejemplo, también podemos pasar un diccionario con parámetros y argumentos extras para la función.
En las implementaciones más actuales de Django se ha cambiado la forma de definir las URLs, pasando de utilizar tuplas a utilizar la función URL, ya que esto nos permite agregar un parámetro adicional para especificar el nombre de la URL que estamos definiendo.
Esto se traduce en que podemos utilizar diferentes métodos del framework para referirnos a este nombre que le damos a la URL y así poder hacer referencia de forma dinámica, mejorando la legibilidad y la re utilización de nuestra aplicación.
Veamos en la siguiente imagen como queda una configuración utilizando la función url():
Aquí vemos como al patrón de la expresión regular, le asignamos la vista index y adicionalmente la llamamos con el nombre index al especificarlo en el parámetro name.
Con esto si utilizamos otros métodos, como el reverse_lazy() podemos darle este nombre de URL y este nos devolverá a donde debe dirigir este nombre.
Finalizando este tutorial podemos ya podemos tener una noción básica de cómo trabajan las URL y cuál es su objetivo dentro de Django y cómo podemos sacarle provecho en nuestra aplicación.