Django框架使用富文本编辑器Uedit的方法分析


Posted in Python onJuly 31, 2018

本文实例讲述了Django框架使用富文本编辑器Uedit的方法。分享给大家供大家参考,具体如下:

Uedit是百度一款非常好用的富文本编辑器

一、安装及基本配置

官方GitHub(有详细的安装使用教程):https://github.com/zhangfisher/DjangoUeditor

1. settings.py

INSTALLED_APPS = [
  ...
  'DjangoUeditor',
  ...
]

2. 配置urls

from django.conf.urls import url, include
urlpatterns = [
# 富文本相关url
  url(r'^ueditor/', include('DjangoUeditor.urls')),
]

3. 字段信息

在需要使用富文本的字段所在的models.py中

from DjangoUeditor.models import UEditorField
class Articles(models.Model):
  ...
  content = UEditorField(width=1200, height=600, imagePath="article/ueditor/",
              filePath="article/ueditor/",verbose_name=u"文章内容")
  ...

注意,在要使用ueditor的字段所在adminx.py的类中,添加

# 这样就指定了course的detail字段使用ueditor富文本编辑器
class ArticlesAdmin(object):
  ...
  style_fields = {"content":"ueditor"}

二、Ueditor插件制作

1. 插件代码

在extra_apps.xadmin.plugins中新建ueditor.py

import xadmin
from xadmin.views import BaseAdminPlugin, CreateAdminView, ModelFormAdminView, UpdateAdminView
from DjangoUeditor.models import UEditorField
from DjangoUeditor.widgets import UEditorWidget
from django.conf import settings
class XadminUEditorWidget(UEditorWidget):
  def __init__(self, **kwargs):
    self.ueditor_options=kwargs
    self.Media.js = None
    super(XadminUEditorWidget, self).__init__(kwargs)
class UeditorPlugin(BaseAdminPlugin):
  def get_field_style(self, attrs, db_field, style, **kwargs):
    if style == 'ueditor':
      if isinstance(db_field, UEditorField):
        widget = db_field.formfield().widget
        param = {}
        param.update(widget.ueditor_settings)
        param.update(widget.attrs)
        return {'widget': XadminUEditorWidget(**param)}
    return attrs
  def block_extrahead(self, context, nodes):
    js = '<script type="text/javascript" src="%s"></script>' % (settings.STATIC_URL + "ueditor/ueditor.config.js")
    js += '<script type="text/javascript" src="%s"></script>' % (settings.STATIC_URL + "ueditor/ueditor.all.min.js")
    nodes.append(js)
xadmin.site.register_plugin(UeditorPlugin, UpdateAdminView)
xadmin.site.register_plugin(UeditorPlugin, CreateAdminView)

2. xadmin中注册插件

在extra_apps.xadmin.plugins.__init__.py中添加

PLUGINS = (
  ...
  'ueditor',
)

友情提醒

在Django中使用富文本编辑器

在HTML页面中,Django处于安全考虑,将文本内容默认转义,我们需要关闭

来正常输出我们的文章

{% autoescape off %}
{{ article.abstract }}
{% endautoescape %}

记录一下,空格的转义字符分为如下几种:

1.  &160#;不断行的空白(1个字符宽度)

2. &8194#;半个空白(1个字符宽度)

3. &8195#;一个空白(2个字符宽度)

4. &8201#;窄空白(小于1个字符宽度)

平时一般用的是 但是在中文中也许有时候更适合用

希望本文所述对大家基于Django框架的Python程序设计有所帮助。

Python 相关文章推荐
Python中的引用和拷贝浅析
Nov 22 Python
读写json中文ASCII乱码问题的解决方法
Nov 05 Python
Python只用40行代码编写的计算器实例
May 10 Python
新手如何快速入门Python(菜鸟必看篇)
Jun 10 Python
5款非常棒的Python工具
Jan 05 Python
如何使用Python脚本实现文件拷贝
Nov 20 Python
Python如何基于selenium实现自动登录博客园
Dec 16 Python
python 浅谈serial与stm32通信的编码问题
Dec 18 Python
Python 实现OpenCV格式和PIL.Image格式互转
Jan 09 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
Mar 10 Python
tensorflow转换ckpt为savermodel模型的实现
May 25 Python
Python实现Keras搭建神经网络训练分类模型教程
Jun 12 Python
Windows下python3.6.4安装教程
Jul 31 #Python
windows下pycharm安装、创建文件、配置默认模板
Jul 31 #Python
win8下python3.4安装和环境配置图文教程
Jul 31 #Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 #Python
Win8下python3.5.1安装教程
Jul 29 #Python
win7下python3.6安装配置方法图文教程
Jul 31 #Python
win7+Python3.5下scrapy的安装方法
Jul 31 #Python
You might like
PHP编码规范的深入探讨
2013/06/06 PHP
PHP 循环删除无限分类子节点的实现代码
2013/06/21 PHP
php中url传递中文字符,特殊危险字符的解决方法
2013/08/17 PHP
ThinkPHP查询返回简单字段数组的方法
2014/08/25 PHP
PHP convert_uudecode()函数讲解
2019/02/14 PHP
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
JavaScript中几种常见排序算法小结
2011/02/22 Javascript
JS+CSS实现模仿浏览器网页字符查找功能的方法
2015/02/26 Javascript
在linux中使用包管理器安装node.js
2015/03/13 Javascript
js生成验证码并直接在前端判断
2015/05/15 Javascript
基于javascript实现单选及多选的向右和向左移动实例
2015/07/25 Javascript
js操作XML文件的实现方法兼容IE与FireFox
2016/06/25 Javascript
jquery对Json的各种遍历方法总结(必看篇)
2016/09/29 Javascript
如何实现json数据可视化详解
2016/11/24 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
微信小程序 天气预报开发实例代码源码
2017/01/20 Javascript
node.js入门学习之url模块
2017/02/25 Javascript
浅析 NodeJs 的几种文件路径
2017/06/07 NodeJs
Vue 动态组件与 v-once 指令的实现
2019/02/12 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
Python数据类型详解(三)元祖:tuple
2016/05/08 Python
python将字符串list写入excel和txt的实例
2019/07/20 Python
Python实现直播推流效果
2019/11/26 Python
Python发送手机动态验证码代码实例
2020/02/28 Python
Python新手学习函数默认参数设置
2020/06/03 Python
python进行OpenCV实战之画图(直线、矩形、圆形)
2020/08/27 Python
详解如何用HTML5 Canvas API控制图片的缩放变换
2016/03/22 HTML / CSS
跑步、骑行和铁人三项的高性能眼镜和服装:ROKA
2018/07/06 全球购物
网上蛋糕店创业计划书
2014/01/24 职场文书
接受捐赠答谢词
2014/01/27 职场文书
党员创先争优活动总结
2014/05/04 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
九九重阳节标语
2014/10/07 职场文书
高校自主招生校长推荐信
2015/03/23 职场文书
护士岗前培训心得体会
2016/01/08 职场文书
python字典的元素访问实例详解
2021/07/21 Python