2012-12-15 87 views
2

這是在新聞頁面上的URL的最佳選擇:動態slu with永久重定向或在數據庫中存儲slu 012

動態生成slu。。從對象ID加載頁面。如果slu does不匹配,永久重定向到正確的slu。。

myweb.com/542/my-news-item 

缺點我看到:如果新聞標題改變了蛞蝓的變化,但老蛞蝓將重定向到新的一個,所以我不知道這是否是對查找的問題。

OR:

靜態蛞蝓是永遠不會改變,即使新聞標題被改變。

myweb.com/my-news-item 

缺點我看到:db上還有一個字段。如果我從根本上改變了新聞標題中,嵌入會有很大的不同

+0

與主要問題沒有關係,但是您可以通過執行類似'if not self.id:self.slug = slugify(self.title)'的方式來更改新聞標題而不更改slug,通常通過重寫保存方法 –

回答

1

如果你想蛞蝓更新,不打破舊的網址,你可以分開蛞蝓和鏈接在你的列表視圖最新,這些方針的東西應該做的它:

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" 

在你爭取的模板,你可以簡單地調用最新的蛞蝓,但你可能會希望有一些M在網址/ Y/d層次藏漢

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

如果您的網站獲得大量流量,您可能需要添加一個芹菜任務檢索最新的slu and並將其複製到您的文章模型上的一個領域,然後。這將爲您節省一些SQL JOIN。