【问题标题】:when to store slugfield in database in django?何时将 slugfield 存储在 django 的数据库中?
【发布时间】:2013-08-31 11:01:39
【问题描述】:

假设我在

访问文章
/article/23/the-46-year-old-virgin

/article/id/slug 表单中。

我显然可以使用 id 来获取视图中的数据。
然后我看不出我将 slug 存储在数据库中的原因。

另外,/article/id/slug 并不比 /article/slug 好?

【问题讨论】:

  • 你想要漂亮的 url,不是吗?你想要它们独一无二,所以如果你有两个 46 岁的处女,你也需要 id。

标签: django slug


【解决方案1】:

仅使用id 的问题在于它会损害 URL 的可读性和搜索引擎优化。 (后者见here。)

仅使用 slug 的一个问题是它们很长,并且 URL 在现实世界中有时会被截断。如果您在开头有id,那么您只需将其用于查找并在slug 部分出现问题时重定向。另一个问题是您必须保证您的slugs 始终是唯一的。您确定您永远不想拥有两篇标题相同的文章吗?

所以做一个或另一个当然是可能的,但两者都做有好处。

关于是否应该将 slug 存储在数据库中,首先决定是否希望在标题更改时更改 URL。保持它不变的一个好处是,您将拥有一个单一的、永久的、规范的资源 URL,如果您需要编辑标题,该 URL 不会改变。明显的缺点是您的网址将不再反映文章的确切标题。

如果您始终希望 slug 与标题匹配,那么这将成为一个标准的数据库非规范化问题 - slug 将代表您出于性能原因预先计算的冗余(派生)信息。我自己可能不会打扰。

如果您希望 URL 保持不变,即使标题被编辑,您当然必须单独存储 slug。

【讨论】:

  • 感谢您的回答,我的问题是,如果我同时使用 id 和 slug,我需要将 slug 存储在数据库中吗?
  • 我也扩展了我的答案来解决这个问题。
猜你喜欢
  • 2011-04-15
  • 2011-12-05
  • 2013-03-05
  • 2011-02-19
  • 1970-01-01
  • 2012-08-06
  • 2013-08-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多