5

私はdjangoプロジェクトに取り組んでおり、stackoverflow.comで行われているようにURLの最後にスラッグを含めたいと思います:http ://example.com/object/1/my-slug-generated-from- my-title

オブジェクトIDは、スラッグではなくアイテムの検索に使用されます。stackoverflow.comのように、リンクを取得するときにスラッグはまったく問題になりません(表示するだけです)。

Qestion:スラッグを実際のデータベースフィールドとして保存するのではなく、動的に生成することにはマイナス面(またはプラス面)がありますか?

例(実際のコードではありません):

class Widget(models.Model):
    title = models.CharField()

    def _slug(self):
      return slugify(self.title)
    slug = property(_slug)

AutoSlugFieldのようなものを使用するのではなく(たとえば)?

タイトルと一致させる予定なので、データベースに重複フィールドがあるのが理にかなっているのかわかりませんでした。

ありがとう!

4

4 に答える 4

8

(ルックアップではなく) 装飾目的でスラッグを使用している場合は、動的に生成することをお勧めします。

さらに、投稿したコード サンプルは次のように記述できます。

@property
def slug(self):
  return slugify(self.title)
于 2009-10-10T18:44:25.410 に答える
2

「カフェ」や「浦安鉄筋家族」をスラッグにしてみてください。

本当に準備が整っていない限り、うんちのように見える可能性があります。

スラッグをカスタマイズする機能が必要な場合があります。

于 2010-08-06T07:27:51.800 に答える
1

欠点は、ページをレンダリングするたびにスラッグを自動的に生成することです。利点は、直接クエリされることのないフィールドでデータベースのスペースを占有しないことです。

どちらの方法でも問題ありません。パフォーマンスとスペースの要件によって異なります。

于 2009-10-10T19:54:55.237 に答える
0

スラッグを動的に生成することの主な欠点は、オブジェクトごとにスラッグをカスタマイズする機能がないことです。それらを短くてきれいにします。英語のタイトルの場合はこれで問題ありませんが、英語以外のコンテンツの場合、生成されたスラッグは醜いものになる可能性があります。

于 2009-10-22T19:02:00.567 に答える