Artículos

¿Qué es un «slug» en Django?

La palabra slug proviene de los medios de comunicación. En esa industria, un slug es una forma informal de nombrar las noticias durante el proceso de producción.1 Permite describir el contenido del artículo mediante palabras clave e información concisa.

El concepto es similar en el desarrollo web. Un slug es la parte de una URL que identifica una página de un sitio de una manera fácil de entender para el usuario, usando palabras clave para dar una idea de su contenido.2 Podemos tomar como ejemplo la URL de otro de nuestros artículos: https://sophilabs.com/es/articulos/como-usar-aprendizaje-automatico-para-analizar-sentimientos-con-representaciones-vectoriales-de-palabras. El slug es machine-learning-for-sentiment-analysis y expresa claramente de qué trata el artículo.

Por qué deberías usar slugs

La mayoría de los motores de búsqueda usan las URL de las páginas junto con el título, los metadatos y el propio contenido para determinar su posición en los resultados. Google recomienda usar guiones (-) para separar palabras, ya que los interpreta como espacios. También debes mantener las URL breves y concisas para que cada palabra tenga más valor para el rastreador del buscador. Agregar demasiadas palabras similares puede considerarse un exceso de palabras clave, y algunos buscadores podrían penalizar o bloquear tu sitio.3

Convierte tu URL en un slug manualmente

Tomando como ejemplo el artículo de aprendizaje automático que mencionamos, podríamos usar su título (Cómo usar aprendizaje automático para analizar sentimientos con representaciones vectoriales de palabras) para generar una URL que indique su contenido y aporte información al usuario. Como las URL no pueden incluir espacios, debemos reemplazarlos por %20, su valor en la codificación de URL, lo que haría que se vea así:

How%20%to%20%Use%20Machine%20Learning%20for%20Sentiment%20Analysis%20with%20Word%20Embeddings

No es clara ni fácil de usar, pero si la convertimos en un slug, reemplazando los espacios por guiones y pasando todas las letras a minúsculas, se vería así:

how-to-use-machine-learning-for-sentiment-analysis-with-word-embeddings

Es más clara, pero sigue siendo demasiado larga y contiene palabras que no son importantes ni aportan significado a la URL. Debemos filtrar el título antes de convertirlo en un slug para mostrar solo las palabras importantes.

machine-learning-for-sentiment-analysis

Como puedes ver, es mucho mejor que el primer ejemplo. Es fácil de entender, breve y concisa, y expresa claramente de qué trata el artículo.

Pero ¿qué pasa si los títulos de los artículos de nuestro sitio no son únicos? ¿No obtendríamos una URL repetida? En ese caso, puedes agregar el Id del artículo antes del slug para que sea único para cada página.

123/machine-learning-for-sentiment-analysis

Slugs en Django

Django incluye algunas herramientas que nos ayudan a agregar slugs fácilmente a nuestra aplicación.

SlugField

Si tenemos un modelo de artículo y queremos agregar un campo a la base de datos para guardar el slug, podemos usar SlugField. Funciona de manera similar a CharField, pero valida que la información guardada tenga formato de slug y no contenga caracteres inválidos.

Slugify

Django también incluye una función en el módulo utils.text llamada slugify, que convierte una cadena de texto normal en un slug de URL al

  • eliminar los caracteres que no sean alfanuméricos, guiones bajos, guiones o espacios

  • eliminar los espacios iniciales y finales

  • convertir a minúsculas

  • reemplazar cualquier espacio o guiones repetidos por un solo guion.

Slugify recibe como parámetros la cadena que queremos convertir y un booleano opcional que indica si queremos permitir caracteres Unicode en el slug.4

>>> slugify(' Machine Learning for Sentiment Analysis ')

'machine-learning-for-sentiment-analysis'

Ahora que mostramos qué son los slugs y cómo funcionan en Django, ¡esperamos que puedas aprovecharlos al máximo!


  1. Wikipedia, s.v. "Slug (publicación)" última actualización: 6 de mayo de 2019. ↩

  2. "¿Qué es un slug y cómo optimizarlo?" Yoast, 18 de septiembre de 2019. ↩

  3. "URL amigables para SEO" Backlinko, consultado el 27 de abril de 2020. ↩

  4. "Utilidades de Django," Documentación, Django Project, consultado el 27 de abril de 2020. ↩

Lecturas relacionadas