如果您询问该代码段是否可以工作,只要语法被考虑,答案是肯定的,它不应该导致服务器500错误。
但是,对于urlize的文件说,我引用:
注意,如果urlize被应用到已经包含HTML标记 文本 ,事情会不会达到预期效果。 仅将此筛选器应用于纯文本。
因此,假设您的内容在首次创建对象时是纯文本,则一切都应该没有问题。
当您编辑现有的对象,打电话save
将重新对body
属性的内容是不是在这一点上纯文本的urlize
过滤器。
据我所知,如果在内容中只使用格式正确的HTML链接,这不会导致严重的悲伤,但文档中仍建议您只使用纯文本作为urlize
的参数。
你可以使用脱衣通过MLStripper class from activestate调用urlize
例如之前每次urlize
插入HTML:
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)
至少在理论上...
你应该真正做到,除非你在您的模型中使用模板过滤器有很强的理由,在您的模板中使用urlize
,例如:
{{ object.body|urlize }}
是的,我想在模板中使用urlize,但是我已经阅读了一本关于django(关于django的权威指南)的书籍,它可以方便地保存格式为标签且无标签(2 TextField)的主体以获得更好的性能: - \ – xRobot 2010-05-28 07:58:23
出于性能方面的考虑,使用两个字段对于大量文本将是可信的,但是如果文本大到足以导致性能下降,则应该重新考虑处理数据的方式。例如,您可以在输入中使用文本编辑器,以便用户在将文本保存到数据库之前定义链接。另外,我很难在Django的权威指南中找到对“urlize”的引用。 – 2010-05-28 16:53:41