富文本在存储时是带有HTML代码的,因此在将富文本导出word文档时需要将富文本内容提取为纯文本
纯文字提取有两种方法推荐第二种
方法一:
后台导入包
from django.template.defaultfilters import striptags #提取富文本文字
需要提取处调用
text = striptags(obj_wen.ued) #obj_wen.ued为富文本存储在数据库中的名
![](https://img2018.cnblogs.com/blog/1854525/201911/1854525-20191102190451252-1503355902.png)
原文本
输出纯文本
通过对比,该方法可以提取纯文本但对英文过滤不佳
方法二
采用djangoueditor官方文档的方法
在富文本编辑页面在前端获取纯文本内容然后通过表单存入后台
function getPlainTxt() {
text = UE.getEditor('id_content').getPlainTxt(); //获取富文本编辑器中纯文本
//document.getElementById("wenben").innerHTML=text;
$("#wenben").attr("value",text); //赋值给value传入后台
}
id_content为前端ueditor id 可通过打开该页面按F12查看 如图:
![](https://img2018.cnblogs.com/blog/1854525/201911/1854525-20191102191849371-2020074568.png)
提取结果
该方法基本完美解决英文纯文本提取,该方法需要注意在调用提取纯文字时需要在作者编辑完后开始,可写在表单提交时
导出为word并实现下载基本一致
首先导入python word包
from docx import Document
然后构建文档
document = Document() #docx函数
document.add_heading(obj_wen.biaoti, 0) #写入标题
text = (obj_wen.textfield) #数据库纯文本
#text = striptags(obj_wen.ued) #此为方法一 obj_wen.ued 为需要导出的ueditor在数据库存储的内容
document.styles['Normal'].font.name = u'黑体' #字体格式黑体
p = document.add_paragraph()
p.paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER #居中
run = p.add_run(text) #写入文字
导入包实现下载文件名实现中文
from django.utils.http import urlquote #中文文件名
response = HttpResponse(content_type='application/octet-stream') #缓存申明 octet-stream为文件类型
response['Content-Disposition']='attachment;filename="%s.doc"'% urlquote(obj_wen.biaoti) #下载说明 文件名
document.save(response) #文件保存入缓存
return response
前端调用即可实现下载
![](https://img2018.cnblogs.com/blog/1854525/201911/1854525-20191102193608925-893450978.png)
希望对你有所帮助!