Django,如何覆盖slugify函数

我希望我的冒号变成破折号而不是空字符串。我想我可以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包中进行呢?


手掌心
浏览 170回答 1
1回答

SMILET

我将slugify在您的项目中实现所需的更改的自定义功能:def myslugify(value):    return slugify(value.replace(":", "-"))您可以在save()模型的方法中使用此功能。这可以使您的代码免受“魔术”的困扰slugify,就像其他人期望的那样以Django实现的方式工作。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python