2009-04-03

django+tiny_mce使用到的html转换

这里主要涉及2个方面的问题:
  1. tiny_mce生成的HTML是以html escape的形式存在的,即把<存为&lt, 把空格存为&nbsp;等
  2. 在显示时,通常分为两种显示:一种是去除格式的摘要显示,这时就要将&nbsp;这样的字符转换为空格重新显示,而django中没有相应的filter;第二种是全格式的显示,即WYSIWYG,显示所有的HTML实体
在开发过程中,2问题中的第二点是比较容易解决的,本文主要介绍第一点的解决,思路有2个,一个是在view中进行转换,另一种是在template中转换,相比而言,后者则通用性、简洁性方便好了很多,也符合DRY原则,因为只需要一次建立自己的filter而若干次调用即可。

具体的解决方法为:
  1. 在相应的应用下建立templatetags文件夹,其下建立__init__.py(表明此为一module)和mytags.py
  2. 在mytags.py文件中写下如下代码,生成自己的filter
  3. 最后在template中{% load mytags %} {content|escape}
代码如下:

@register.filter
def unescape(value):
from django.utils.text import unescape_entities
return unescape_entities(value)

没有评论: