O que é uma "bala" em Django?

votos
386

Quando eu ler o código Django vezes eu vejo em modelos que é chamado de lesma. Eu não sou completamente certo o que é isso, mas eu sei que tem algo a ver com URLs. Como e quando é que esta lesma coisa deveria ser usado?

(Eu li sua definição no presente glossário .)

Publicado 09/01/2009 em 05:52
fonte usuário
Em outras línguas...                            


9 respostas

votos
494

É uma maneira de gerar uma URL válida, geralmente utilizando dados já obtidos. Por exemplo, utilizando o título de um artigo para gerar um URL. Eu aconselho para gerar a lesma, usando uma função, dado um título (ou outro pedaço de dados), em vez de defini-lo 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 Django, tais 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ê referenciar esse objeto com uma URL, com um nome significativo? Você poderia usar Article.id para que o URL ficaria assim:

www.example.com/article/23

Ou, você pode referenciar o título assim:

www.example.com/article/The 46 Year Old Virgin

O problema é que os espaços não são válidos em URLs, eles precisam ser substituídos por %20que é feio, tornando-se o seguinte:

www.example.com/article/The%2046%20Year%20Old%20Virgin

Isso não é resolver o nosso URL significativa. Isso não seria melhor:

www.example.com/article/the-46-year-old-virgin

Isso é uma lesma. the-46-year-old-virgin. Todas as letras são downcased e espaços são substituídos por hífens -. Veja a URL desta página muito para um exemplo!

Respondeu 09/01/2009 em 06:31
fonte usuário

votos
85

Se eu pode fornecer algum contexto histórico:

O termo "lesma" tem a ver com o vazamento de metal de chumbo, neste caso, a partir do qual foram feitas as fontes de imprensa. Cada papel, em seguida, teve sua fábrica fontes regularmente re-derretido e reformulada em moldes frescos, uma vez que após muitas cópias se tornaram desgastados. Aprendizes como eu começou sua carreira lá, e percorreu todo o caminho até o topo (não mais).

Typographs tinha para compor o texto de um artigo de um modo inverso com os caracteres de chumbo empilhados num sensato. Então, na hora da impressão das cartas seria diretamente no papel. Todos os typographs poderia ler o jornal espelhado tão rápido quanto o impresso. Portanto, as lesmas, caracóis (como) também as histórias lenta (o último a ser fixo) foram muitos no banco de espera, unicamente identificados por suas letras punho, principalmente o título inteiro geralmente mais legível. Algumas notícias "quentes" estavam esperando lá no banco, para possível correção de último minuto, (papel de noite) antes da última montagem e impressão definitiva.

Django surgiu a partir dos escritórios da revista Lawrence no Kansas. Onde provavelmente algum jargão impressão ainda perdura. A-django-entusiasta - & --friendly-old-lesma-boy de-France.

Respondeu 15/08/2009 em 16:45
fonte usuário

votos
43

Como um pouco de história, o termo 'lesma' vem do mundo da edição de jornal.

É o nome informal dado a uma história durante o processo de produção. Como a história segue o seu caminho tortuoso do repórter batida através de editor até as "máquinas de impressão", este é o nome que é referenciado por, por exemplo ", Você fixa esses erros no 'Rússia-cortes-europa-gás' história ?".

Django usa-lo como parte do URL para localizar a história, sendo um exemplo www.mysite.com/archives/russia-cuts-europe-gas.

Respondeu 09/01/2009 em 07:01
fonte usuário

votos
16

A partir daqui .

“Slug” é um termo jornal, mas o que isso significa aqui é o bit final da URL. Por exemplo, um post com o título, “Um pouco sobre Django” se tornaria “bit-sobre-django” automaticamente (você pode, é claro, alterá-lo facilmente se você não gosta da lesma gerada automaticamente).

Respondeu 09/01/2009 em 05:56
fonte usuário

votos
14

É uma parte descritiva da URL que está lá para torná-lo mais humano descritiva, mas sem necessariamente ser requerido pelo servidor web - em que é uma "bala" em Django? a lesma é 'in-django-que-é-a-bala', mas a bala não é usado para determinar a página servidos (neste site, pelo menos)

Respondeu 09/01/2009 em 06:02
fonte usuário

votos
13

Slug é um termo jornal. Uma bala é um curto rótulo para algo, contendo apenas letras, números, ou ressalta hyphens.They're geralmente usados ​​em URLs. (Como em documentos django)

Um campo de lesma em Django é usado para armazenar e gerar válidos URLs para suas páginas web criados dinamicamente.

Assim como a maneira que você adicionou esta pergunta sobre estouro de pilha e uma página dinâmica é gerada e quando você vê na barra de endereços você vai ver o seu título da pergunta com "-" no lugar dos espaços. Isso é exatamente o trabalho de um campo de lesma.

Digite descrição da imagem aqui

O título digitado por você era algo como este -> O que é uma “bala” em Django?

&

Em armazená-lo em uma lesma, apresentou resultados que para o que-é-a-lesma-in-django (ver URL da página)

Respondeu 12/09/2014 em 13:32
fonte usuário

votos
6

Slug é uma pequena etiqueta amigável URL para conteúdo específico. Ele só conter letras, números sublinhados ou hífenes. Lesmas são comumente salvar com o respectivo conteúdo e passar como uma string 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 do título como Django lesma tem 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 ele precisa de exclusividade adicionar unique=Trueno campo lesma.

por exemplo, a partir do exemplo anterior:

Class Article(models.Model):
    title = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100, unique=True)

Você está preguiçoso para fazer processo de lesma? não se preocupe, este plugin irá ajudá-lo. django-autoslug

Respondeu 31/10/2016 em 18:14
fonte usuário

votos
6

Também auto lesma na django-admin. Adicionado a ModelAdmin:

prepopulated_fields = {'slug': ('title', )}

Como aqui:

class ArticleAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug')
    search_fields = ('content', )

    prepopulated_fields = {'slug': ('title', )}
Respondeu 21/01/2013 em 13:42
fonte usuário

votos
0

lesma

Uma pequena etiqueta para alguma coisa, contendo apenas letras, números, sublinhados ou hífens. Eles são geralmente usados ​​em URLs. Por exemplo, em uma URL típica entrada de blog:

https://www.djangoproject.com/weblog/2008/apr/12/spring/ o último bit (primavera) é a lesma.

Respondeu 14/08/2018 em 07:44
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more