Artigos

O que é um “slug” no Django?

A palavra slug vem dos meios de comunicação. Nesse setor, um slug é uma forma informal de nomear matérias durante o processo de produção.1 É uma maneira de descrever o conteúdo do artigo usando palavras-chave e informações concisas.

O conceito é semelhante no desenvolvimento web. Um slug é a parte de uma URL que identifica uma página de um site de uma maneira fácil de entender para o usuário, usando palavras-chave para dar uma ideia do conteúdo.2 Podemos usar como exemplo a URL de outro dos nossos artigos: https://sophilabs.com/pt/artigos/como-usar-aprendizado-de-maquina-para-analisar-sentimentos-com-representacoes-vetoriais-de-palavras. O slug é machine-learning-for-sentiment-analysis e indica claramente o assunto do artigo.

Por que você deve usar slugs

A maioria dos mecanismos de busca usa as URLs das páginas, junto com o título, os metadados e o próprio conteúdo, para determinar sua posição nos resultados. O Google recomenda usar hífens (-) para separar palavras, pois os interpreta como espaços. Você também deve manter as URLs curtas e concisas para que cada palavra tenha mais valor para o rastreador do buscador. Adicionar muitas palavras semelhantes pode ser considerado excesso de palavras-chave, e alguns mecanismos de busca podem penalizar ou bloquear seu site.3

Transforme sua URL em um slug manualmente

Usando como exemplo o artigo de aprendizado de máquina mencionado, poderíamos usar seu título (Como usar aprendizado de máquina para análise de sentimentos com representações vetoriais de palavras) para gerar uma URL que indique o conteúdo e ofereça informações ao usuário. Como as URLs não podem incluir espaços, precisamos substituí-los por %20, seu valor na codificação de URL, o que faria a URL ficar assim:

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

Não é clara nem fácil de usar, mas, se a transformarmos em um slug, substituindo os espaços por hífens e convertendo todas as letras em minúsculas, ficaria assim:

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

Ela é mais clara, mas ainda é longa demais e contém palavras que não são importantes nem acrescentam significado à URL. Devemos filtrar o título antes de convertê-lo em slug para mostrar apenas as palavras importantes.

machine-learning-for-sentiment-analysis

Como você pode ver, é muito melhor do que o primeiro exemplo. É fácil de entender, curta e concisa, e indica claramente o assunto do artigo.

Mas e se os títulos dos artigos do nosso site não forem únicos? Não teríamos uma URL repetida? Nesse caso, você pode adicionar o Id do artigo antes do slug, tornando-o único para cada página.

123/machine-learning-for-sentiment-analysis

Slugs no Django

O Django inclui algumas ferramentas que ajudam a adicionar slugs facilmente à aplicação.

SlugField

Se temos um modelo de artigo e queremos adicionar um campo ao banco de dados para armazenar o slug, podemos usar SlugField. Ele funciona de forma semelhante a CharField, mas valida se a informação armazenada está no formato de slug e não contém caracteres inválidos.

Slugify

O Django também inclui uma função no módulo utils.text chamada slugify, que converte uma string normal em um slug de URL ao

  • remover caracteres que não sejam alfanuméricos, sublinhados, hífens ou espaços

  • remover espaços no início e no fim

  • converter para minúsculas

  • substituir qualquer espaço ou hífens repetidos por um único hífen.

Slugify recebe como parâmetros a string que queremos converter e um booleano opcional que indica se queremos permitir caracteres Unicode no slug.4

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

'machine-learning-for-sentiment-analysis'

Agora que mostramos o que são slugs e como funcionam no Django, esperamos que você aproveite ao máximo!


  1. Wikipedia, s.v. "Slug (publicação)" última atualização: 6 de maio de 2019. ↩

  2. "O que é um slug e como otimizá-lo?" Yoast, 18 de setembro de 2019. ↩

  3. "URLs amigáveis para SEO" Backlinko, acessado em 27 de abril de 2020. ↩

  4. "Utilitários do Django," Documentação, Django Project, acessado em 27 de abril de 2020. ↩

“O que é um “slug” no Django?” por Claudio Russi está sob a licença CC BY SA. Os exemplos de código-fonte estão sob a licença MIT.

Foto de Wolfgang Hasselmann.

Classificado em Pesquisa e aprendizado.

Leituras relacionadas