【问题标题】:Django, how to override slugify functionDjango,如何覆盖 slugify 函数
【发布时间】:2013-06-01 21:59:43
【问题描述】:

我希望我的冒号变成破折号而不是空字符串。我想我可以在我的 save() 方法中添加类似 slugify(self.name.replace(":", "-")) 的内容,但那根本不会是 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 包中执行?

【问题讨论】:

    标签: python django


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 2016-05-04
      • 2012-10-16
      • 2020-07-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多