大多数语言和框架都有一种“ -istic”的做事方式。例如,在Python中,执行操作的方式可能有多种,但是一种方式可能比其他方式更具Python风格。当创建代表用户在某个对象上作用的用户的Django urlpattern时,在创建urlpattern时使用每个对象的id字段或每个对象的名称是否更具Djangoistic?
例如,如果“ user1”正在“标记”对象“ object1”(此对象可能是另一个用户或诸如汽车之类的东西),并且该用户和对象都具有id字段和名称字段(可能包含空格,也可能不包含空格),这是指定该URL的更Django方式吗?使用这个吗?
/tags/user1/object1
还是这个?
/tags/<user1_id>/<object1_id>
如果object1的长名称包含空格,您可能会看到一个非常丑陋的URL:
/tags/carjunkie/1972%20Ford%20Gran%20Torino
(我应该注意,在我的应用程序中,在这种情况下我无法控制汽车的名称,实际上可以使用上述URL结束)。
但是使用每个对象的数据库ID字段也有缺点。如果网址看起来像
/tags/10/100
一个竞争对手可能会推测,您可能只有10个用户在标记100辆或更少的您不想要的汽车。他们可以不断点击网址,同时增加数字以查看用户群的大小。
另一个选择是使用UUID字段,但这也有缺点。例如,如果您要调试,那么使用UUID可能会很麻烦。它们也不可排序。
在使用用户或对象的id字段或其名称创建urlpattern时,哪个更具Django风格?