我在谷歌上搜索发现:“SlugField 是一个用于在关系数据库中存储 URL slug 的字段。SlugField 是由 Django ORM 定义的列。SlugField 实际上是在 django.db 中定义的。”
但是,这个定义对我来说听起来有点复杂。我什至不知道在这种情况下 slug 是什么,也不确定 Django ORM。我只需要一个简单的理由为什么我应该在 Django 中使用 SlugField。
您并不严格需要使用 SlugField。
“Slug”是从新闻业借用的术语,指的是标题的简短版本。正如在对您的回答的评论中提到的,这是一种使 URL 更加明确同时仍然保持简短的方法,而不是使用例如完整的标题(通常会太长)或 ID(不会一点也不明确或令人难忘:想想一个用户想要找到他们记得阅读的文章:如果他们开始在地址栏中输入某个关键字,则会弹出包含该关键字的 URL,而带有 ID 的则不会)。
如果您愿意,您可以制作自己的 slug,方法是使其对 URL 友好(删除 URL 不包含的任何符号,转换需要进行 url 编码的任何内容,将空格转换为连字符...)并删除任何内容不必要的(例如,删除像 the、a、an、is、are... 这样的单词或将冗长的标题裁剪为最大数量的单词或字符)。
SlugField 只是一种便利,您可以使用它在某种程度上实现自动化。它还带有一些您可能需要的额外功能:例如,它会根据您选择的字段自动生成一个 slug,并且它可以向 slug 添加一个唯一编号,这样您就不会意外地得到两个相同的 URL两篇具有相同标题的不同文章。
它是一个字段的原因是,尽管您可以,但每次访问对象时都计算 slug 并不聪明:slug 只会在标题更改时更改,这意味着可能永远不会,因此只生成一次是有意义的然后存入数据库,下次使用,不用再生产。这具有使某个文章的 URL 永久化的额外优势:您可以将其设置为即使更改文章标题也不会更改 slug,这将是一件好事。
一旦你有了它,因为 slug 明确地指向一个特定的对象,它充当一种人类可读的唯一 ID,因此它可以像不透明的数字 ID 一样有效地从数据库中检索对象。它还模糊了您拥有的对象数量(如果出于某种原因您想要这样做),因为例如 1543 的顺序 ID 会告诉任何人您可能还有 1542 个在该对象之前出现的其他对象。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句