【发布时间】:2012-02-22 18:39:10
【问题描述】:
我实际上在一个 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 中的对象。我在这种情况下发现的问题是 slug 可能会随着时间的推移而改变,从而生成损坏的 URL。如果某些搜索引擎(如 Google)已将这个损坏的 URL 编入索引,用户可能会被引导至“未找到”页面,我们的页面排名可能会降低。冷冻蛞蝓可能是一个解决方案。我的意思是,只在“添加”操作中保存 slug,而不是在“更新”操作中。但是 slug 现在可以代表旧的或不正确的东西。
所有选项都有优点和缺点。可能使用它们的某种组合可能会出现一些问题。 你怎么看?
【问题讨论】:
-
看看这个问题的网址,你就会得到答案:-)
标签: django url identifier