1. ホーム
  2. python

[解決済み] Djangoの "slug "とは何ですか?

2022-03-14 11:47:12

質問

Django のコードを読んでいると、モデルの中に "slug" と呼ばれるものをよく見かけます。これが何であるかはよく分かりませんが、URL と関係があることは知っています。このスラッグというものは、いつ、どのように使われることになっているのでしょうか?

(での定義を読みました。 この用語集 .)

解決方法は?

スラッグとは、有効なURLを生成する方法の一つで、一般的には既に取得したデータを使用します。例えば、スラッグは、記事のタイトルを使用してURLを生成します。私は、手動で設定するよりも、タイトル(または他のデータ)を与えて、関数によってスラッグを生成することをお勧めします。

一例です。

<title> The 46 Year Old Virgin </title>
<content> A silly comedy movie </content>
<slug> the-46-year-old-virgin </slug>

では、次のような Django モデルがあると仮定してみましょう。

class Article(models.Model):
    title = models.CharField(max_length=100)
    content = models.TextField(max_length=1000)
    slug = models.SlugField(max_length=40)

このオブジェクトをURLで、意味のある名前で参照するにはどうしたらよいでしょうか。例えばArticle.idを使うことができ、URLはこのようになります。

www.example.com/article/23

あるいは、このようにタイトルを参照したい場合もあります。

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

空白文字はURLでは無効なので、空白文字を %20 という結果になります。

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

どちらの試みも、あまり意味のある、読みやすいURLにはなりません。この方がよいでしょう。

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

この例では the-46-year-old-virgin はスラッグです。すべての文字を小文字にし、スペースをハイフンに置き換えて、タイトルから作成されます。 - .

また、別の例として、まさにこのウェブページのURLもご覧ください。