我正在开发一个django项目,并希望在url的末尾包含一个slug,就像在stackoverflow.com上所做的那样:http://example.com/object/1/my-slug-generated-from-my-title
对象ID将用于查找项目,而不是slug - 而且,就像stackoverflow.com一样,当获取链接时(仅显示它),slug根本不重要。
Qestion :动态生成slug是否存在下行(或上行),而不是将其保存为实际的数据库字段?
例如(不是真正的代码):
class Widget(models.Model):
title = models.CharField()
def _slug(self):
return slugify(self.title)
slug = property(_slug)
而不是使用类似AutoSlugField(for example)的东西?
由于我的计划是让它与标题匹配,我不知道在数据库中是否有重复的字段是有意义的。
谢谢!
答案 0 :(得分:8)
如果您使用slug进行装饰(而非查找)目的,动态生成它是最好的主意。
此外,您发布的代码示例可以这样写:
@property
def slug(self):
return slugify(self.title)
答案 1 :(得分:2)
尝试用“café”或“浦安鉄筋家族”这个词制作一个slu ..
除非你做好充分准备,否则它可能看起来像是便便。
有时您需要能够自定义slu ..
答案 2 :(得分:1)
缺点是每次渲染页面时都会自动生成slug。好处是你不会占用数据库中的空间,而这个空间永远不会被直接查询。
无论哪种方式都很好,它只取决于你的性能与空间要求。
答案 3 :(得分:0)
动态生成slug的主要缺点是你错过了自定义每个对象的slugs的能力,例如。让它们更短更漂亮。对于英文标题,这可以没问题,但对于非英文内容,生成的标书可能很难看。