此文为前一篇文章的续写: Django 插件之 Xadmin

Ueditor 介绍

UEditor 是由百度 web 前端研发部开发所见即所得富文本 web 编辑器,具有轻量,可定制,注重用户体验等特点,开源基于 MIT 协议,允许自由使用和修改代码。

DjangoUeditor 安装

方法一:将 github 整个源码包下载回家,在命令行运行:

python setup.py install

方法二:使用 pip 工具在命令行运行(推荐):

pip install DjangoUeditor

方法三:直接到github上下载源码包(非常推荐,python3环境下pip的方式听说会有问题):

https://github.com/twz915/DjangoUeditor3/

下载后解压拿到一个名为DjangoUeditor3-master的文件夹,拿出子目录中的DjangoUeditor文件夹

放到python环境中的site-packages文件夹中

settings.py 文件中注册此 app :

# settings.py
INSTALLED_APPS = [
...
'DjangoUeditor',
]

urls .py 文件中配置:

# urls.py
urlpatterns = [
...
url(r'^ueditor/',include('DjangoUeditor.urls' )), # 富文本相关URL
]

models.py 中配置:

# models.py
from DjangoUeditor.models import UEditorField
class Article(models.Model):
content = UEditorField(verbose_name='内容详情',width=750, height=300, imagePath="images/ueditor/", filePath="images/ueditor/", default='')
...
# imagePath和filePath 为文件上传路径,需提前开放media文件夹接口,如不知,右转百度,这里不再赘余

adminx.py 中为需要富文本的字段配置(该adminx.py文件是你应用文件夹下创建的):

class ArticleAdmin(object):  # 这里的类名以  表名+Admin 的形式命名
...
style_fields = {"content": "ueditor"} # content 就是你要用富文本编辑器编写内容的字段 xadmin.site.register(models.Article, ArticleAdmin) # 这里在xadmin中注册该表,并指定是上面写的类名,否则富文本编辑器不生效

到此,djangoueditor 配置完成。下面是将它作为 xadmin 的插件步骤。

xadmin 插件制作

找到 xadmin 目录下的 plugins 文件夹,此文件下大多为 xadmin 的插件,新建 ueditor.py 文件,代码及说明如下:

# 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)

然后在 plugins 文件下找到 __init__.py 文件,在代码中加入:

# __init__.py
PLUGINS = (
...
'ueditor'
)

这样,在 xadmin 启动的时候,ueditor 会得到加载。

在后台页面中查看如下:

tips:如果你的csrf没有注释掉,上传图片时会出现上传失败现象

如果你的django项目是前后端不分离的,csrf中间件必须需要用到,你可以采用下面的方式

解决方案:

找到项目中的 site-packages ,再找到 DjangoUeditor 下的 views.py 文件:

# views.py
@csrf_exempt # 查看是否有此行代码,如没有,添加此行代码,表示对这个视图不检验csrf
def get_ueditor_controller(request):
"""获取ueditor的后端URL地址 """
...
return reponseAction[action](request)

完成到这里,Xadmin 的插件就算制作完成。

可能会遇到错误:

render() got an unexpected keyword argument 'renderer'

报错93行:boundfield.py in as_widget, line 93
解决方法:注释掉!
如图:

参考资料:

django-ueditor 下载地址:https://github.com/zhangfisher/DjangoUeditor

ueditor 官网:http://ueditor.baidu.com/website/

Xadmin 官网:http://sshwsfc.github.io/Xadmin/

Xadmin 文档:http://Xadmin.readthedocs.io/en/docs-chinese/make_plugin.html

ueditor 官网:http://ueditor.baidu.com/website/


Django 插件之 Xadmin实现富文本编辑器的更多相关文章

  1. Django的media配置与富文本编辑器使用的实例

    效果预览 文章列表 添加文章 编辑文章|文章详情|删除文章 项目的基本文件 项目的Model from django.db import models # 导入富文本编辑器相关的模块 from cke ...

  2. Xadmin集成富文本编辑器ueditor

    在xadmin中通过自定义插件,实现富文本编辑器,效果如下: 1.首先,pip安装ueditor的Django版本: pip install DjangoUeditor 2.之后需要添加到项目的set ...

  3. django项目中使用KindEditor富文本编辑器。

    先从官网下载插件,放在static文件下 前端引入 <script type="text/javascript" src="/static/back/kindedi ...

  4. django项目中使用KindEditor富文本编辑器

    先从官网下载插件,放在static文件下 前端引入 <script type="text/javascript" src="/static/back/kindedi ...

  5. Django学习---py3下的富文本编辑器的使用

    背景说明: Ueditor HTML编辑器是百度开源的HTML编辑器,但是在Python3下调用报错,找不到widgets模块,经查发现,DjangoUeditor是基于Python 2.7的,对Py ...

  6. Django使用xadmin集成富文本编辑器Ueditor(方法二)

    一.xadmin的安装与配置1.安装xadmin,其中第一种在python3中安装不成功,推荐第二种或者第三种 方式一:pip install xadmin 方式二:pip install git+g ...

  7. Django Admin后台使用tinymc 富文本编辑器

    1.CDN地址 <script src="//cdn.tinymce.com/4/tinymce.min.js"></script> 2.修改base.ht ...

  8. django2集成DjangoUeditor富文本编辑器

    富文本编辑器,在web开发中可以说是不可缺少的.django并没有自带富文本编辑器,因此我们需要自己集成,在这里推荐大家使用DjangoUeditor,因为DjangoUeditor封装了我们需要的一 ...

  9. django—xadmin中集成富文本编辑器ueditor

    一.安装 pip命令安装,由于ueditor为百度开发的一款富文本编辑框,现已停止维护,如果解释器为python2,则直接pip install djangoueditor 解压包安装,python3 ...

随机推荐

  1. (33)Vue购物车

    computed:{ lists(){ return this.$store.state.list }, }, 用v-model来双向绑定input控制checkbox是否选中 Vue中双向数据绑定是 ...

  2. 2019.10.25字符串——zr

    题意: 给你两个字符串,由01组成:求他们两个的最短公共非子序列,要求字典序最小: 非公共子序列:都不是这两个字符串的子序列: 本人只会暴力啊,二进制枚举稳拿15分: 然而这道题其实是一个最短路题: ...

  3. 模板 - 数据结构 - 可持久化无旋Treap/PersistentFHQTreap

    有可能当树中有键值相同的节点时,貌似是要对Split和Merge均进行复制的,本人实测:只在Split的时候复制得到了一个WA,但只在Merge的时候复制还是AC,可能是恰好又躲过去了.有人说假如确保 ...

  4. 【洛谷】P4167 [Violet]樱花

    题面 又懒得弄题面,开个传送门吧 分析 人生第一次切数学题,我们先把方程写出来 $$\frac {1}{x}+\frac {1}{y}=\frac {1}{n!}$$ 现在我们知道的条件是x,y都是正 ...

  5. Bootstrap selectpicker 下拉框多选获取选中value和多选获取文本值

    1.页面代码: 页面引入: bootstrap-select.min.css和 bootstrap-select.min.js. defaults-zh_CN.min.js文件,并初始化下拉选项框. ...

  6. 深入理解JVM虚拟机13:再谈四种引用及GC实践

    Java中的四种引用类型 一.背景 Java的内存回收不需要程序员负责,JVM会在必要时启动Java GC完成垃圾回收.Java以便我们控制对象的生存周期,提供给了我们四种引用方式,引用强度从强到弱分 ...

  7. 【JVM】虚拟机字节码执行引擎

    概念模型上,典型的帧栈结构如下(栈是线程私有的,也就是每个线程都会有自己的栈).                     典型的帧栈结构 局部变量表 存放方法参数和方法内部定义的局部变量.在编译阶段, ...

  8. ubuntu之路——day9.1 深度学习超参数的调优

    参数重要性: 第一阶:α即learning rate 第二阶:momentum中的β,hidden units的数量,mini-batch的大小 第三阶:hidden layers的数量,learni ...

  9. 范仁义html+css课程---2、html常用标签

    范仁义html+css课程---2.html常用标签 一.总结 一句话总结: html常用的标签有 标题标签.div.span.p.hr.br标签 等 1.html中的标题标签有哪些? <h1& ...

  10. ArcGIS Python人门到精通目录基于ArcGIS10.2,100以上案例15章42个视频806分钟,51GIS网站上线

    ArcGIS Python人门到精通目录 闫老师 QQ:276529800 微信13108507190 1.  ArcGIS Python基础 1.1  ArcGIS为什么学习Python 1.2 A ...