Rutas con nombre en Django
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