在网站中实现URL slug功能

在网站中实现URL slug功能,url,url-routing,slug,Url,Url Routing,Slug,我想知道如何在网站中实现URL slug功能,而不必在URL中显示当前正在查看的记录的ID 例如,StackOverflow URL如下所示:。请注意,URL包含记录的ID。如果我将此页面添加到书签中,并且由于某些原因记录的ID发生了更改,我将无法在将来查看此记录 我想实现一个URL slug功能,它不依赖于记录的ID,所以看起来像 你能提供实现这一目标的步骤吗? 你是否会使用唱片的标题,然后把它删掉,保存下来,然后再也不更改它 我正在寻找的示例URL如下(注意URL中没有ID) 谢谢 你在寻找

我想知道如何在网站中实现URL slug功能,而不必在URL中显示当前正在查看的记录的ID

例如,StackOverflow URL如下所示:。请注意,URL包含记录的ID。如果我将此页面添加到书签中,并且由于某些原因记录的ID发生了更改,我将无法在将来查看此记录

我想实现一个URL slug功能,它不依赖于记录的ID,所以看起来像

你能提供实现这一目标的步骤吗? 你是否会使用唱片的标题,然后把它删掉,保存下来,然后再也不更改它

我正在寻找的示例URL如下(注意URL中没有ID)


谢谢

你在寻找什么?

在一天结束时,你需要一些独特的方法来识别每个资源。通常这是一个整数,因为它对数据库友好,而且比GUID更人性化。如果您想使用任意字符串,这与整数ID的一般技术相同,但您必须小心,不要让两个或多个记录共享同一个slug。

基本上就是这样做的。每种方法都有其优点:

  • 在堆栈溢出时,由于问题的标题可以更改,因此ID用于永久链接到问题,标题不正确的URL将直接重定向
  • 使用slug作为永久标识符意味着slug永远不会改变。更改标题是可能的,但它可能看起来很混乱,您最好重新定向slug。此外,slug要么需要具有全局唯一性,要么您需要找到一种方法来强制每个年/月/日或其他任何时间的唯一性
您需要一个数据库索引来提高slug查找的效率。幸运的是,Django自动创建了一个数据库索引


您可能仍然想要一个数字主键,只是为了简化数据库的其余部分。

不完全是这样。我想知道的是,您将如何实现URL slug功能,以便在URL中不显示ID,但以某种方式显示正确的记录(该记录将映射到未显示的ID)。主要是,在应用程序中,您根据ID访问记录。该ID通常会像stackoverflow一样在URL中传递。如果我在我的URL中实现URL段塞而不显示记录的ID,我会怎么做?我不知道哪种方法是实现这种URL slug功能而不使用记录ID的正确方法。希望这能澄清问题。