4

我希望我的冒号变成破折号而不是空字符串。我想我可以slugify(self.name.replace(":", "-"))在我的save()方法中加入类似的东西,但这根本不会是 DRY(我认为)。

我也可以.replace()直接将该操作添加到django.utils.text.slugify

def slugify(value):
    value = unicodedata.normalize('NFKD', value).encode('ascii', 'ignore').decode('ascii')
    value = value.replace(":", "-")
    value = re.sub('[^\w\s-]', '', value).strip().lower()
    return mark_safe(re.sub('[-\s]+', '-', value))

这似乎不是一个好主意。我该如何使用正则表达式?

  1. 我该如何使用正则表达式?
  2. 如何将此覆盖绑定到项目而不是在 django 包中进行?
4

1 回答 1

2

我将slugify在您的项目中实现一个自定义函数,并进行所需的更改:

def myslugify(value):
    return slugify(value.replace(":", "-"))

您可以在save()模型的方法中使用此功能。这使您的代码不受“魔法”的影响,因为其他人期望slugify按照 Django 实现它的方式工作。

于 2013-06-01T22:16:46.897 回答