Django-识别一个对象的URL设计和最佳实践

标签 django url identifier

我实际上在django项目中工作,我不确定访问一个特定对象页面的URL的最佳格式。

我在考虑这些替代方案:

1) Using the autoincremental ID => .com/object/15

这是最简单且众所周知的方式。 “id_object”是数据库引擎在保存对象时生成的自动增量ID。我以这种方式发现的问题是URL是简单可迭代的。因此,我们可以制作一个简单的脚本并通过增加URL中的ID来访问所有页面。可能是安全问题。
2) Using a <hash_id> => .com/object/c30204225d8311e185c3002219f52617

“hash_id”应该是一些字母数字字符串值,例如使用uuid函数生成的。这是一个好主意,因为它不是可迭代的。但是生成“随机”唯一ID可能会引起一些问题。
3) Using a Slug => .com/object/some-slug-generated-with-the-object

Django附带了一个用于模型的“slug”字段,它可用于标识URL中的对象。在这种情况下,我发现的问题是,该条可能随时间变化,从而生成损坏的URL。如果某些搜索引擎(例如Google)已为该损坏的URL编制了索引,则可能会将用户引导至“未找到”页面,并且我们的页面排名可能会降低。卡住子弹可能是一个解决方案。我的意思是,只在“添加”操作上保存该段子,而不在“更新”上保存。但是,该条现在可以表示旧的或不正确的东西。

所有选项都有优点和缺点。可能将它们组合使用可能会出现一些问题。
您如何看待?

最佳答案

我认为最好的选择是这样的:

.com/object/AUTOINCREMENT_ID/SLUG_FIELD

为什么?

第一个原因:,AUTOINCREMENT_ID对用户来说很容易识别对象。例如,在一个电子商务网站中,如果用户要访问该页面几次(因为他不确定要购买该产品),他将识别该URL。

第二个原因: slug字段将防止有人在网页上迭代的问题,并使URL对人们更清晰。

.com/object/10/ford-munstang-2010.com/object/c30204225d8311e185c3002219f52617更清晰

关于Django-识别一个对象的URL设计和最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9400920/

相关文章:

django - 使用 Django ModelForm 上传个人资料图片

python - 如何在 Django REST 中实现方法?

javascript - angularJS 更改 url 通知

url - 通过 IIS URL 重写模块删除 URL 的特定部分

c# - 唯一文件夹标识符

mysql - 与 Solr 相比,MyISAM 在 Django 搜索方面的扩展性如何?

django - Django模型有DESCRIBE函数吗?

javascript - 提取 URL 的末尾

ios - 使用 iOS 获取某种设备标识符

sql - Postgres 中的删除函数