我想为我在 django 中编写的购物车应用程序编写 URLconf。我想知道构建 URL 的首选方式是什么。
用户可以通过超链接访问 URL(他们不应该在地址栏中键入它)。它将指定的项目添加到他们的购物车。我是不是该
对项目使用 pk:
http://example.com/add/253
或使用独特的蛞蝓:
http://example.com/add/unique_item_slug
这些方法中的任何一种是否具有安全性或性能优势。有什么理由喜欢一个吗?
我想为我在 django 中编写的购物车应用程序编写 URLconf。我想知道构建 URL 的首选方式是什么。
用户可以通过超链接访问 URL(他们不应该在地址栏中键入它)。它将指定的项目添加到他们的购物车。我是不是该
对项目使用 pk:
http://example.com/add/253
或使用独特的蛞蝓:
http://example.com/add/unique_item_slug
这些方法中的任何一种是否具有安全性或性能优势。有什么理由喜欢一个吗?
使用 slug 的主要原因是 SEO(搜索、引擎优化)。论据是搜索“我的真棒小部件”将返回结果 -
http://example.com/products/my_awesome_widget
比......高
http://example.com/products/423
Google 喜欢对人类有意义的 URL。理想情况下,您希望 URL 尽可能多地说明页面。查看googles SEO starter guide中的“改进 URL 的结构”部分。
由于您将在网上销售商品,因此网络冲浪者可以轻松地在搜索引擎上找到您的产品,这一点很重要。因此,绝对推荐使用蛞蝓。
仅依赖 slug 的一个缺点是您需要将产品名称强制转换为唯一的slug。您目前可能没有对产品名称的唯一约束,因此您可能需要做一些工作来创建 slug(通过检查您要创建的 slug 是否已经存在)。一个常见的解决方案是包含 slug 和产品 ID。
http://example.com/products/my-awesome-widget/243
这样,您的 slug 不必是唯一的,但您的 url 仍然包含产品名称。
在现代 Web 开发中,您可以在 URL 中使用您的 pk,这不是问题。
依靠一个非常宁静的设计,我会推荐你:
http://example.com/product/253/add
这http://example.com/product/253
是您的产品详细视图。
正如 Ewen 所说,将标题直接放在 URL 中的目的是 SEO。在 URL 中包含关键字对搜索引擎结果有显着影响
在 URL 中使用主键实际上并没有任何重大的安全风险,除了人们猜测/预测其他主键的能力。但你不应该依赖
没有人会猜到这个
无论如何,作为一种安全措施。