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获取当前计算机cpu数量的方法
Apr 18 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
Nov 16 Python
Python Paramiko模块的安装与使用详解
Nov 18 Python
python条件变量之生产者与消费者操作实例分析
Mar 22 Python
Python数据处理numpy.median的实例讲解
Apr 02 Python
Python实现微信翻译机器人的方法
Aug 13 Python
Python 获取numpy.array索引值的实例
Dec 06 Python
Python3实现个位数字和十位数字对调, 其乘积不变
May 03 Python
通过实例解析Python RPC实现原理及方法
Jul 07 Python
详解Pytorch显存动态分配规律探索
Nov 17 Python
python Scrapy爬虫框架的使用
Jan 21 Python
python上下文管理器异常问题解决方法
Feb 07 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安装问题
2006/10/09 PHP
PHP 设计模式之观察者模式介绍
2012/02/22 PHP
php正则取img标记中任意属性(正则替换去掉或改变图片img标记中的任意属性)
2013/08/13 PHP
PHP随手笔记整理之PHP脚本和JAVA连接mysql数据库
2015/11/25 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
js利用与或运算符优先级实现if else条件判断表达式
2010/04/15 Javascript
读jQuery之九 一些瑕疵说明
2011/06/21 Javascript
node.js适合游戏后台开发吗?
2014/09/03 Javascript
jquery学习总结(超级详细)
2014/09/04 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
2015/10/31 Javascript
javascript 将共享属性迁移到原型中去的实现方法
2016/08/31 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
JavaScript 过滤关键字
2017/03/20 Javascript
前端自动化开发之Node.js的环境搭建教程
2017/04/01 Javascript
JavaScript文本特效实例小结【3个示例】
2018/12/22 Javascript
Vue 路由间跳转和新开窗口的方式(query、params)
2019/12/25 Javascript
JS Web Flex弹性盒子模型代码实例
2020/03/10 Javascript
关于AngularJS中几种Providers的区别总结
2020/05/17 Javascript
vue-cli脚手架的.babelrc文件用法说明
2020/09/11 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
一篇不错的Python入门教程
2007/02/08 Python
python使用urllib模块开发的多线程豆瓣小站mp3下载器
2014/01/16 Python
python sort、sorted高级排序技巧
2014/11/21 Python
Python中列表、字典、元组数据结构的简单学习笔记
2016/03/20 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
2016/09/11 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
澳大利亚最大的女装零售商:Millers
2017/09/10 全球购物
SOKOLOV官网:俄罗斯珠宝首饰品牌
2021/01/02 全球购物
什么是唯一索引
2015/07/05 面试题
战略合作意向书范本
2014/04/01 职场文书
幼儿评语大全
2014/04/30 职场文书
干部职工纪律作风整改措施思想汇报
2014/10/11 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
mysql升级到5.7时,wordpress导数据报错1067的问题
2021/05/27 MySQL
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电
SQL Server查询某个字段在哪些表中存在
2022/03/03 SQL Server