Python Web开发:从富文本中提取文字
来自CloudWiki
安装pyquery
pip install pyquery
原理
通过富文本存储的内容都是以带格式的HTML字符串存储的,在渲染时Django模板会自动解析字符串中的特定HTML标签符号。
这里借助第三方工具包pyquery进行HTML解析。
修改视图处理函数
newsApp/views.py:
增加富文本解析的内容:
代码中的pq.
from pyquery import PyQuery as pq # 从数据库获取、过滤和排序数据 newList = MyNew.objects.all().filter( newType=newName).order_by('-publishDate') for mynew in newList: html = pq(mynew.description) # 使用pq方法解析html内容 mynew.mytxt = pq(html)('p').text() # 截取html段落文字
- newList本身是一个临时变量,临时增加的mytxt也是一个临时变量.htm
修改网页
修改newList.html,在每条新闻标题下方添加文字说明。
truncatechars:"110" 用于截断字符串,使得其只只显示前面110个字符。
{% for mynew in newList %} <div class="news-model"><img src="{% static 'img/newsicon.gif' %}"> <a href="{% url 'newsApp:newDetail' mynew.id %}"><b>{{mynew.title}}</b></a> <span>【{{mynew.publishDate|date:"Y-m-d"}}】</span> <p> <!-- 添加新闻简要说明 --> {{mynew.mytxt|truncatechars:"110"}}... </p> </div> {% endfor %}