最好将slug保存到DB还是动态生成?

时间:2009-10-10 18:34:48

标签: django slug

我正在开发一个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)的东西?

由于我的计划是让它与标题匹配,我不知道在数据库中是否有重复的字段是有意义的。

谢谢!

4 个答案:

答案 0 :(得分:8)

如果您使用slug进行装饰(而非查找)目的,动态生成它是最好的主意。

此外,您发布的代码示例可以这样写:

@property
def slug(self):
  return slugify(self.title)

答案 1 :(得分:2)

尝试用“café”或“浦安鉄筋家族”这个词制作一个slu ..

除非你做好充分准备,否则它可能看起来像是便便。

有时您需要能够自定义slu ..

答案 2 :(得分:1)

缺点是每次渲染页面时都会自动生成slug。好处是你不会占用数据库中的空间,而这个空间永远不会被直接查询。

无论哪种方式都很好,它只取决于你的性能与空间要求。

答案 3 :(得分:0)

动态生成slug的主要缺点是你错过了自定义每个对象的slugs的能力,例如。让它们更短更漂亮。对于英文标题,这可以没问题,但对于非英文内容,生成的标书可能很难看。