新闻页面上网址的最佳选择是:
动态生成slu ..从对象ID加载页面。如果slug不匹配,永久重定向到正确的slug。
myweb.com/542/my-news-item
我明白了:如果新闻标题被更改,那么slug会改变,但旧的slug会重定向到新的slug,所以我不知道这是否是查找问题。
OR:
即使新闻标题发生变化,静态slu will也永远不会改变。
myweb.com/my-news-item
我明白了:db上还有一个字段。如果我从根本上改变新闻标题,那么slu will将会非常不同
答案 0 :(得分:1)
如果你想要更新slug而不破坏旧的url,你可以分开slug并链接列表视图中的最新内容,这些内容应该这样做:
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"
在你的招募模板中你可以简单地调用最新的slug,但是你可能想要在url中有一些M / Y / D层次结构
<a href="/news/articles/{{ article.articleslug_set.latest }}/">{{ article.title }}</a>
如果您的网站获得了大量流量,您可能需要添加一个芹菜任务来检索最新的slug并将其复制到您的文章模型上的某个字段中。这将为您节省一些SQL JOIN。
答案 1 :(得分:0)
使用redirects app和保存后信号的组合如何guy wrote。