2

ニュース ページの URL に最適なオプションはどれですか。

スラッグを動的に生成します。オブジェクト ID からページを読み込みます。スラッグが一致しない場合は、正しいスラッグに永続的にリダイレクトします。

myweb.com/542/my-news-item

短所: ニュースのタイトルが変更されるとスラッグが変更されますが、古いスラッグは新しいスラッグにリダイレクトされるため、ルックアップに問題があるかどうかはわかりません。

また:

ニュースのタイトルが変わっても変わらない静的なスラッグ。

myweb.com/my-news-item

短所:データベースにもう1つのフィールドがあります。ニュースのタイトルを根本的に変更すると、スラッグが大きく異なります

4

2 に答える 2

1

古いURLを壊さずにスラッグを更新したい場合は、スラッグを分離してリストビューの最新のものをリンクすることができます。これらの行に沿った何かがそれを行う必要があります。

class Article(models.Model):
    title = models.CharField() # etc

class ArticleSlug(models.Model):
    article = models.ForeignKey(Article)
    slug = models.SlugField(unique=True)
    date_created = models.DateTime(auto_now_add=True, editable=False)

    class Meta:
        get_latest_by = "date_created" 

参加テンプレートでは、最新のスラッグを呼び出すだけで済みますが、URLにもM / Y/D階層を含める必要があります。

<a href="/news/articles/{{ article.articleslug_set.latest }}/">{{ article.title }}</a>

サイトに大量のトラフィックが発生する場合は、最新のスラッグを取得して記事モデルのフィールドにコピーするセロリタスクを追加することをお勧めします。これにより、SQLJOINを節約できます。

于 2012-12-15T15:10:58.373 に答える