gpt4 book ai didi

python - 具有永久重定向或在数据库上存储 slug 的动态 slug

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:31:38 25 4
gpt4 key购买 nike

哪个是新闻页面上 url 的最佳选择:

动态生成 slug。从对象 ID 加载页面。如果 slug 不匹配,永久重定向到正确的 slug。

myweb.com/542/my-news-item

我看到的缺点:如果更改新闻标题,则 slug 会发生变化,但旧的 slug 将重定向到新的,所以我不知道这是否是查找的问题。

或者:

永远不会改变的静态 slug,即使新闻标题改变也是如此。

myweb.com/my-news-item

我看到的缺点:数据库中多了一个字段。如果我从根本上改变新闻标题,那 slug 就会大不相同

最佳答案

如果您希望 slugs 更新,而不破坏旧的 url,您可以分离 slugs 并在 ListView 中链接最新的 slugs,按照这些行应该这样做:

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>

如果您的网站流量很大,您可能想要添加一个 celery 任务来检索最新的 slug 并将其不时地复制到文章模型的字段中。这将为您节省一些 SQL JOIN。

关于python - 具有永久重定向或在数据库上存储 slug 的动态 slug,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13893095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com