Post Top Ad

Your Ad Spot

martes, 15 de septiembre de 2020

Enrutamiento basado en slug en Django

 

Nuestro modelo de publicación tiene un campo de slug que habíamos configurado anteriormente. Ahora queremos configurar el enrutamiento basado en slug en Django. Para diseñar URL para una aplicación, aprendimos cómo usar la configuración de URL o URLconf del módulo Python. URLconfg usa código Python para mapear entre expresiones de ruta de URL y funciones de Python definidas en vistas. Algunas rutas de enrutamiento son estáticas y otras son dinámicas. En otras palabras, podemos utilizar datos variables en la URL para determinar cómo asignar una función de vista en particular. Hemos visto cómo usar el enrutamiento de ID basado en números enteros y, en este tutorial, veremos cómo usar slugs basados ​​en cadenas.


Definición de babosa

El Post mdel tiene el slug definido usando slug = models.SlugField () que se resalta a continuación. Nuestro sistema tiene actualmente tres modelos de Post en la base de datos y cada uno tiene un slug asociado. Nuestros babosas hasta ahora son a-new-titlesecond-postthird-post.
posts / models.py


Definición de la ruta de URL para la captura de slug

Las aplicaciones web responden a las solicitudes Http y utilizan parámetros en la solicitud para determinar cómo enrutar. Nuestro objetivo es poder visitar enlaces como http: // localhost: 8000 / posts / a-new-title /, http: // localhost: 8000 / posts / second-post / y http: // localhost: 8000 / posts / third-post / y Django se enrutarán a la vista detallada de cada publicación en particular. Para capturar una variable slug en la URL, podemos usar el patrón <slug: slug> en la función path () . Esto se resalta en el código a continuación.

mensajes / urls.py

La otra cosa importante a tener en cuenta en el código anterior es que el nameparámetro está configurado en post_detail . Este es un patrón de URL con nombre o una ruta con nombre. Esto le brinda la posibilidad de vincular nombres en lugar de codificarlos en hrefs. Veremos cómo funciona eso en un momento.


Usando la babosa capturada

Ahora, en la función post_detail () en el archivo views.py, podemos aceptar el slug capturado de la URL usando post_detail (request, slug) . A partir de ahí, usamos el ORM de Django para consultar la base de datos usando ese slug con el código Post.objects.get (slug = slug) . Por último, representamos la plantilla post_detail.html mientras pasamos la variable de contexto que contiene el resultado de la consulta a la base de datos.

posts / views.py


Vinculación a través de Slug

La página de la lista de publicaciones necesita que cada publicación se vincule mediante slug a la página de detalles de la publicación. Especificamos esto en el atributo href usando {% url 'post_detail' post.slug%} . Ese código está resaltado aquí.

posts / templates / posts / post_list.html

Ahora tenemos enlaces que usan una babosa como vemos aquí.

enlace de django a través de slug


Uso de una plantilla de detalles de publicación

Toda la plomería está en su lugar, ahora todo lo que tenemos que hacer es proporcionar una plantilla post_detail.html como esa.

posts / templates / posts / post_detail.html

babosa ejemplo uno

djanglo slug dos

django slug tres


Resumen de enrutamiento basado en slug en Django

Para hacer que las URL sean bonitas en Django, podemos usar el enrutamiento basado en slug. El uso de slugs también proporciona beneficios de SEO, ya que los motores de búsqueda entenderán mejor un slug descriptivo que una simple ID en la URL. En este tutorial, aprendimos cómo manejar el uso de un slug para enrutar, consultar la base de datos y representar una plantilla para una página de detalles de publicación.


No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

outbrain

Páginas