Quando leio o código do Django, vejo frequentemente nos modelos o que é chamado de "lesma". Não sei bem o que é isso, mas sei que isso tem algo a ver com URLs. Como e quando essa coisa de lesma deve ser usada?
(Li sua definição neste glossário .)
Quando leio o código do Django, vejo frequentemente nos modelos o que é chamado de "lesma". Não sei bem o que é isso, mas sei que isso tem algo a ver com URLs. Como e quando essa coisa de lesma deve ser usada?
(Li sua definição neste glossário .)
Respostas:
Uma "lesma" é uma maneira de gerar uma URL válida, geralmente usando dados já obtidos. Por exemplo, uma lesma usa o título de um artigo para gerar um URL. Aconselho a gerar a lesma por meio de uma função, dado o título (ou outro dado), em vez de defini-la manualmente.
Um exemplo:
<title> The 46 Year Old Virgin </title>
<content> A silly comedy movie </content>
<slug> the-46-year-old-virgin </slug>
Agora vamos fingir que temos um modelo do Django como:
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField(max_length=1000)
slug = models.SlugField(max_length=40)
Como você faria referência a esse objeto com uma URL e um nome significativo? Você pode, por exemplo, usar Article.id para que a URL fique assim:
www.example.com/article/23
Ou você pode querer referenciar o título assim:
www.example.com/article/The 46 Year Old Virgin
Como os espaços não são válidos nos URLs, eles devem ser substituídos por %20
, o que resulta em:
www.example.com/article/The%2046%20Year%20Old%20Virgin
Ambas as tentativas não resultam em URL muito significativo e fácil de ler. Isto é melhor:
www.example.com/article/the-46-year-old-virgin
Neste exemplo, the-46-year-old-virgin
é uma lesma: ela é criada a partir do título, colocando em caixa baixa todas as letras e substituindo os espaços por hífens -
.
Veja também o URL desta página da Web para outro exemplo.
Se eu puder fornecer algum contexto histórico:
O termo "lesma" tem a ver com fundição de metal - chumbo, neste caso - a partir do qual as fontes da imprensa foram feitas. Todos os papéis tinham suas fábricas de fontes re-derretidas e reformuladas regularmente em moldes novos, pois após muitas impressões elas se desgastavam. Aprendizes como eu começaram sua carreira lá, e foram até o topo (não mais).
Os tipógrafos precisavam compor o texto de um artigo de maneira inversa, com os caracteres principais empilhados de maneira sábia. Portanto, no momento da impressão, as letras seriam diretamente sobre o papel. Todas as tipografias podiam ler o jornal espelhado tão rápido quanto o impresso. Portanto, as lesmas (como caracóis) e também as histórias lentas (as últimas a serem corrigidas) eram muitas no banco de espera, identificadas apenas por suas primeiras letras, principalmente o título inteiro geralmente mais legível. Algumas notícias "quentes" estavam esperando no banco, para uma possível correção de última hora (jornal da noite) antes da última montagem e impressão definitiva.
Django surgiu dos escritórios do jornal Lawrence no Kansas. Onde provavelmente ainda existe algum jargão de impressão. A-django-entusiasta - e-amigável-velho-lesma-menino-da-França.
O termo 'lesma' vem do mundo da produção de jornais.
É um nome informal dado a uma história durante o processo de produção. À medida que a história segue seu caminho, do repórter beat (supondo que eles existam mais?) Até o editor e as "impressoras", esse é o nome pelo qual é referenciada, por exemplo, "Você corrigiu esses erros no campo ' a história de Kate e William? ".
Alguns sistemas (como o Django) usam a lesma como parte da URL para localizar a história, por exemplo www.mysite.com/archives/kate-and-william
.
Até o próprio Stack Overflow faz isso, com o auto-referencial GEB-ish (a)/programming/427102/what-is-a-slug-in-django/427201#427201
, embora você possa substituir o slug blahblah
e ele ainda o considere aceitável.
Pode até remontar antes disso, já que os roteiros tinham "slug lines" no início de cada cena, o que basicamente define o plano de fundo dessa cena (onde, quando e assim por diante). É muito semelhante, pois é um precis ou preâmbulo do que se segue.
Em uma máquina Linotype, uma lesma era uma peça de metal de uma única linha, criada a partir dos formulários de letras individuais. Ao criar uma única lesma para toda a linha, isso melhorou bastante a composição de caractere por caractere antigo.
Embora o que se segue seja pura conjectura, um significado inicial de lesma era para uma moeda falsificada (que teria que ser pressionada de alguma forma). Eu poderia imaginar que o uso fosse transformado para o termo de impressão (já que a lesma tinha que ser pressionada usando os caracteres originais) e a partir daí, passando da definição de 'peça de metal' para a definição de 'resumo da história'. A partir daí, é um pequeno passo da impressão adequada para o mundo online.
(a) "Godel Escher, Bach", de Douglas Hofstadter , que eu (pelo menos) considero uma das grandes obras intelectuais modernas. Você também deve conferir seu outro trabalho, "The Metamagical Themas".
Slug é um termo de jornal. Uma lesma é um rótulo curto para algo, contendo apenas letras, números, sublinhados ou hífens. Eles geralmente são usados em URLs. (como nos documentos do Django)
Um campo slug no Django é usado para armazenar e gerar URLs válidos para suas páginas da web criadas dinamicamente.
Assim como você adicionou essa pergunta no Stack Overflow, uma página dinâmica foi gerada e, quando você vê na barra de endereços, verá o título da pergunta com "-" no lugar dos espaços. Esse é exatamente o trabalho de um campo de lesmas.
O título digitado por você era mais ou menos assim -> O que é uma "lesma" no Django?
Ao armazená-lo em um campo de lesma, torna-se "o que é uma lesma no django" (consulte o URL desta página)
A partir daqui .
"Lesma" é um termo de jornal, mas o que significa aqui é o bit final da URL. Por exemplo, um post com o título “Um pouco sobre o Django” se tornaria “um pouco sobre o django” automaticamente (você pode, é claro, alterá-lo facilmente se não gostar da lesma gerada automaticamente).
É uma parte descritiva da URL que existe para torná-la mais descritiva, mas sem necessariamente ser exigida pelo servidor web - em O que é uma "lesma" no Django? a lesma é 'in-django-what-is-lesma', mas a lesma não é usada para determinar a página veiculada (pelo menos neste site)
Slug é um atalho amigável para URLs para conteúdo específico. Ele contém apenas letras, números, sublinhados ou hífens. As lesmas geralmente são salvas com o respectivo conteúdo e passam como uma string de URL.
Slug pode criar usando SlugField
Ex:
class Article(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField(max_length=100)
Se você quiser usar o título como slug, o django possui uma função simples chamada slugify
from django.template.defaultfilters import slugify
class Article(models.Model):
title = models.CharField(max_length=100)
def slug(self):
return slugify(self.title)
Se precisar de exclusividade, adicione unique=True
no campo slug.
por exemplo, do exemplo anterior:
class Article(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField(max_length=100, unique=True)
Você está com preguiça de fazer processo de lesma? não se preocupe, este plugin irá ajudá-lo. django-autoslug
Também slug automático no django-admin. Adicionado no ModelAdmin:
prepopulated_fields = {'slug': ('title', )}
Como aqui:
class ArticleAdmin(admin.ModelAdmin):
list_display = ('title', 'slug')
search_fields = ('content', )
prepopulated_fields = {'slug': ('title', )}
lesma
Um rótulo curto para algo, contendo apenas letras, números, sublinhados ou hífens. Eles geralmente são usados em URLs. Por exemplo, em um URL de entrada de blog típico:
https://www.djangoproject.com/weblog/2008/apr/12/spring/ o último bit (primavera) é a lesma.