为什么我需要在 Django 中使用 SlugField?

赛布卡伊尔

我在谷歌上搜索发现:“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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

为什么我们需要在Java中使用移位运算符?

来自分类Dev

为什么我需要在所有传递闭包中使用ConfigureAwait(false)?

来自分类Dev

为什么我需要在工厂中使用angular.copy?

来自分类Dev

Django中的SlugField和覆盖保存

来自分类Dev

为什么我永远不需要在Redux中使用subscription?

来自分类Dev

为什么我们需要在Html.BeginForm中使用@using

来自分类Dev

Django模型中的SlugField()和CharField()有什么区别

来自分类Dev

为什么我需要在node-postgres中使用async / await两次

来自分类Dev

Django中SlugField的用途是什么?

来自分类Dev

为什么我们需要在Inno Setup中使用#expr指令?

来自分类Dev

为什么在Django中使用SlugField()?

来自分类Dev

为什么我需要在Django的TestCase中使用辅助方法create_user()?

来自分类Dev

如果我支持Fvoid类型,为什么需要在F#中使用单位类型?

来自分类Dev

为什么我需要在索引中使用下划线命名属性?

来自分类Dev

Slugfield在探戈与django

来自分类Dev

为什么我们需要在图灵的暂停证明中使用否定部分?

来自分类Dev

为什么我需要在Android中使用super()?

来自分类Dev

为什么我们需要在C ++头文件中使用“ #if defined Identifier”?

来自分类Dev

为什么我需要在资源上使用.close()

来自分类Dev

为什么我需要在C#和PostgreSQL中使用Npgsql引用列和表?

来自分类Dev

Django Slugfield删除文章(“ the”,“ a”,“ an”,“ that”)

来自分类Dev

Django SlugField与URLField

来自分类Dev

为什么要在Django中使用基本视图?

来自分类Dev

为什么我需要在终端上使用 sudo?

来自分类Dev

Django SlugField 部分显示

来自分类Dev

Django SlugField“此字段是必需的”错误

来自分类Dev

为什么我需要在 shareReplay 中使用管道?

来自分类Dev

为什么我需要在以下场景中使用 ReactJS state 在 AJAX 之后更新 UI

来自分类Dev

为什么我需要在代码中使用 `display: flex` 来实现纵横比技术?

Related 相关文章

  1. 1

    为什么我们需要在Java中使用移位运算符?

  2. 2

    为什么我需要在所有传递闭包中使用ConfigureAwait(false)?

  3. 3

    为什么我需要在工厂中使用angular.copy?

  4. 4

    Django中的SlugField和覆盖保存

  5. 5

    为什么我永远不需要在Redux中使用subscription?

  6. 6

    为什么我们需要在Html.BeginForm中使用@using

  7. 7

    Django模型中的SlugField()和CharField()有什么区别

  8. 8

    为什么我需要在node-postgres中使用async / await两次

  9. 9

    Django中SlugField的用途是什么?

  10. 10

    为什么我们需要在Inno Setup中使用#expr指令?

  11. 11

    为什么在Django中使用SlugField()?

  12. 12

    为什么我需要在Django的TestCase中使用辅助方法create_user()?

  13. 13

    如果我支持Fvoid类型,为什么需要在F#中使用单位类型?

  14. 14

    为什么我需要在索引中使用下划线命名属性?

  15. 15

    Slugfield在探戈与django

  16. 16

    为什么我们需要在图灵的暂停证明中使用否定部分?

  17. 17

    为什么我需要在Android中使用super()?

  18. 18

    为什么我们需要在C ++头文件中使用“ #if defined Identifier”?

  19. 19

    为什么我需要在资源上使用.close()

  20. 20

    为什么我需要在C#和PostgreSQL中使用Npgsql引用列和表?

  21. 21

    Django Slugfield删除文章(“ the”,“ a”,“ an”,“ that”)

  22. 22

    Django SlugField与URLField

  23. 23

    为什么要在Django中使用基本视图?

  24. 24

    为什么我需要在终端上使用 sudo?

  25. 25

    Django SlugField 部分显示

  26. 26

    Django SlugField“此字段是必需的”错误

  27. 27

    为什么我需要在 shareReplay 中使用管道?

  28. 28

    为什么我需要在以下场景中使用 ReactJS state 在 AJAX 之后更新 UI

  29. 29

    为什么我需要在代码中使用 `display: flex` 来实现纵横比技术?

热门标签

归档