Rutas con nombre en Django

17-08-2021 - Andrés Cruz

In english
Rutas con nombre en Django

Este material forma parte de mi curso y libro completo; puedes adquirirlos desde el apartado de libros y/o cursos.

El enrutamiento de rutas en una aplicación web permiten definir donde se van a procesar las solicitudes de un cliente; especificando una ruta o URI a un template especifico en Django.

Darle un nombre a nuestras rutas en nuestros proyectos en Django es una de las características que tienen frameworks modernos como lo son CodeIgniter, Laravel... y por supuesto Django, que aparte de trabajar con el MVC (o variantes como el MTV) siempre otra especie de pseudo capa, que es la de las rutas, que la empleamos para hacer el match entre las URLs o URIs y el componente de controlador que es el encargado de procesar la solicitud del usuario.

Definir nombres a las rutas

Tenemos que abrir el archivo urls.py de nuestra app en Django e indicar mediante el app_name un nombre de la aplicación, con esto, podemos referenciar el nombre que definamos a cada una de las rutas colocando como prefijo el nombre de la app seguido de : y luego el nombre de la ruta.

Finalmente, mediante name, indicamos el nombre de la ruta como parámetro de la función path.

Aquí puedes ver un ejemplo de lo especificado anteriormente:

app_name="gestion"
urlpatterns = [
   path('',views.index),
   path('detail/<int:pk>',views.show, name="show"),
]

Le definimos el nombre a la app (app_name="gestion") y a la ruta de ejemplo (name="show").

Ahora, en nuestro template, podemos referenciar el nombre de la  ruta, seguido de los parámetros (en caso de que tenga parámetros):

<a href="{% url 'gestion:show' p.id %}">Ver</a>

Y desde una vista, en caso de que quieras redireccionar a otra visa, puedes hacer algo similar:

def update(request, pk):
   product = get_object_or_404(Product, pk=pk)
   ...
return redirect('gestion:show',pk=pk)

De tal manera que será fácil referenciar a las rutas con nombres desde cualquier aplicación que tengamos definidas en un proyecto en Django.

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.

!Cursos a!

10$

En Udemy

Quedan 1 días!

Udemy

!Cursos desde!

4$

En Academia

Ver los cursos

!Libros desde!

1$

Ver los libros
¡Hazte afiliado en Gumroad!
!Web Alojada en Hostinger!