In django, what is a “slug”?

4698 단어
In django, what is a “slug”?
It's a way of generating a valid URL, generally using data already obtained. For instance, using the title of an article to generate a URL. I'd advise to generate the slug, using a function, given a title (or other piece of data), rather than setting it manually.
An example:
<title> The 46 Year Old Virgin </title>
<content> LOL!!! What a loser heh </content>
<slug> the-46-year-old-virgin </slug>

Now let's pretend that we have a Django model such as:
class Article():
    title
= models.CharField(max_length=100)
    content
= models.TextField(max_length=1000)
    slug
= models.SlugField(max_length=40)

How would you reference this object with a URL, with a meaningful name? You could use Article.id so the URL would look like this:
www.example.com/Article/23

Or, you could reference the title like so:
www.example.com/article/The 46 Year Old Virgin

Problem is, spaces aren't valid in URLs, they need to be replaced by %20 which is ugly, making it the following:
www.example.com/article/The%2046%20Year%20Old%20Virgin

That's not solving our meaningful URL. Wouldn't this be better:
www.example.com/article/the-46-year-old-virgin

That's a slug. 'the-46-year-old-virgin'. All letters are downcased and spaces are replaced by hyphens '-'. See the URL of this very webpage for an example!

좋은 웹페이지 즐겨찾기