代码之家  ›  专栏  ›  技术社区  ›  xRobot

我可以这样使用urlize过滤器吗?

  •  0
  • xRobot  · 技术社区  · 15 年前

    from django.utils.html import urlize
    
    def save(self, force_insert=False, force_update=False):
        self.body = urlize(self.body)
        super(Post, self).save(force_insert, force_update)
    

    正文是文本字段。

    1 回复  |  直到 15 年前
        1
  •  1
  •   Davor Lucic    15 年前

    如果您询问该代码段是否可以按语法工作,答案是肯定的,则不应导致server500错误。

    urlize 说,我引用:

    请注意,如果urlize应用于 已包含HTML的文本 标记,事情不会按预期进行。

    编辑现有对象时,调用 save urlize 筛选的内容 body

    据我所知,如果内容中只使用格式正确的HTML链接,这不会引起严重的悲伤,但是文档仍然建议您应该只使用纯文本作为参数 URL化 .

    您可以剥离 URL化 MLStripper class from activestate :

    from somelib import MLStripper
    def save(self, force_insert=False, force_update=False):
        html_stripper = MLStripper()
        html_stripper.feed(self.body)
        self.body = urlize(html_stripper.get_fed_data())
        super(Post, self).save(force_insert, force_update)
    

    至少在理论上。。。

    除非有充分的理由在模型中使用模板过滤器,否则您真正应该做的是 在模板中,例如:

    {{ object.body|urlize }}