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