回答:
「スラッグ」は、一般にすでに取得されたデータを使用して、有効な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
は、スラッグです。タイトルからすべての文字を小文字にして、スペースをハイフンに置き換えて作成されます-
。
別の例については、このWebページのURLも参照してください。
私がいくつかの歴史的背景を提供するかもしれない場合:
「スラッグ」という用語は、プレスフォントが作成された金属(この場合は鉛)の鋳造に関係しています。その後、多くの印刷物がすり減ったため、すべての用紙のフォントファクトリが定期的に再溶解され、新しい型に再キャストされました。私のような見習いはそこでキャリアをスタートし、(もはやではなく)トップまで行きました。
タイポグラフは、記事の本文を、先頭の文字が賢明に積み重ねられた逆の方法で作成しなければなりませんでした。したがって、印刷時には、文字は紙の上にまっすぐになります。すべてのタイポグラフは、印刷された新聞と同じくらい速くミラーリングされた新聞を読むことができました。したがって、ナメクジ(カタツムリのような)とスローストーリー(最後に修正される)もベンチで待機していて、握りこぶしの文字だけで識別され、タイトル全体が一般的に読みやすくなっています。最後の組み立てと最終的な印刷の前に、可能性のある直前の修正(イブニングペーパー)のために、いくつかの「ホット」ニュースがベンチで待っていました。
Djangoはカンザス州のローレンスジャーナルのオフィスから現れました。おそらく一部の印刷用語はまだ残っています。A-ジャンゴマニア&フレンドリーな古いスラッグ少年フランスから。
「ナメクジ」という用語は、新聞制作の世界に由来します。
制作過程でストーリーに付けられる非公式の名前です。ストーリーは、ビートレポーター(これらがさらに存在すると仮定します)からエディターから「印刷機」に至るまでの経路を曲がりくねっているので、たとえば、「これらのエラーを修正しましたか?ケイト・アンド・ウィリアムの物語?」
一部のシステム(Djangoなど)では、URLの一部としてスラッグを使用してストーリーを見つけます(例:)www.mysite.com/archives/kate-and-william
。
Stack Overflow自体もこれを実行しますが、GEB風の(a)自己参照/programming/427102/what-is-a-slug-in-django/427201#427201
を使用しますが、スラッグを置き換えることができ、blahblah
それでも問題はありません。
脚本には各シーンの開始時に「スラグライン」があり、基本的にはそのシーンの背景(場所、タイミングなど)を設定するため、それよりも前に遡ることもできます。これは、以下の説明または序文であるという点で非常に似ています。
Linotypeマシンでは、スラグは個々の文字フォームから作成された単一の金属片でした。行全体に単一のスラッグを作成することにより、これは古い文字ごとの合成で大幅に改善されました。
以下は純粋な推測ですが、スラグの初期の意味は偽造コイン(何らかの形で押されなければならない)でした。使用法が印刷用語に変換され(スラグは元の文字を使用して押される必要があったため)、そこから「金属片」の定義から「ストーリーの要約」の定義に変更されることを想像できます。そこから、それは適切な印刷からオンラインの世界への短いステップです。
(a)ダグラス・ホフスタッター 1人による「ゴーデル・エッシャー、バッハ」、私は(少なくとも)偉大な近代知的作品の1つと考えています。彼の他の作品「Metamagical Themas」もチェックしてください。
スラグは新聞用語です。スラグとは、文字、数字、アンダースコア、ハイフンのみを含む、何かの短いラベルです。通常、URLで使用されます。(Djangoドキュメントと同様)
Djangoのslugフィールドは、動的に作成されたWebページの有効なURLを格納および生成するために使用されます。
Stack Overflowでこの質問を追加して動的ページが生成されたのと同じように、アドレスバーに表示されるときに、スペースの代わりに「-」が付いた質問のタイトルが表示されます。それはまさしくスラグフィールドの仕事です。
あなたが入力したタイトルはこのようなものでした-> Djangoの「スラッグ」とは何ですか?
スラグフィールドに格納すると、「what-is-a-slug-in-django」になります(このページのURLを参照)
これは、URLの記述部分であり、より人間的な記述にするために存在しますが、必ずしもWebサーバーから要求されるわけではありません-Djangoの「スラッグ」とは何ですか?スラグは 'in-django-what-is-a-slug'ですが、スラグは(少なくともこのサイトで)提供されるページを決定するために使用されません
Slugは、特定のコンテンツのURLフレンドリーな短いラベルです。文字、数字、アンダースコア、ハイフンのみが含まれます。スラグは通常、それぞれのコンテンツとともに保存され、URL文字列として渡されます。
SlugはSlugFieldを使用して作成できます
例:
class Article(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField(max_length=100)
タイトルをスラッグとして使用したい場合、djangoには、 slugify
from django.template.defaultfilters import slugify
class Article(models.Model):
title = models.CharField(max_length=100)
def slug(self):
return slugify(self.title)
一意性が必要な場合unique=True
は、スラッグフィールドを追加します。
たとえば、前の例から:
class Article(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField(max_length=100, unique=True)
あなたはスラッグプロセスをするのが面倒ですか?心配しないでください。このプラグインが役立ちます。 django-autoslug
ナメクジ
文字、数字、アンダースコア、ハイフンのみを含む、何かの短いラベル。通常、URLで使用されます。たとえば、一般的なブログエントリのURLでは次のようになります。
https://www.djangoproject.com/weblog/2008/apr/12/spring/ 最後のビット(春)はスラッグです。