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入门篇之面向对象
Oct 20 Python
Python中装饰器的一个妙用
Feb 08 Python
python监控文件或目录变化
Jun 07 Python
python实现折半查找和归并排序算法
Apr 14 Python
Python实现类的创建与使用方法示例
Jul 25 Python
利用python为运维人员写一个监控脚本
Mar 25 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
Jul 07 Python
django session完成状态保持的方法
Nov 27 Python
带你认识Django
Jan 15 Python
python读csv文件时指定行为表头或无表头的方法
Jun 26 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
Python使用pyenv实现多环境管理
Feb 05 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根据两点间的经纬度计算距离
2014/10/31 PHP
PHP数据库连接mysql与mysqli对比分析
2016/01/04 PHP
php基于环形链表解决约瑟夫环问题示例
2017/11/07 PHP
javascript中对对层的控制
2006/12/29 Javascript
几种延迟加载JS代码的方法加快网页的访问速度
2013/10/12 Javascript
js强制把网址设为默认首页
2015/09/29 Javascript
基于BootStrap实现局部刷新分页实例代码
2016/08/08 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
详解javascript事件绑定使用方法
2016/10/20 Javascript
AngularJS控制器controller给模型数据赋初始值的方法
2017/01/04 Javascript
Vue.js学习记录之在元素与template中使用v-if指令实例
2017/06/27 Javascript
解决Vue+Element ui开发中碰到的IE问题
2018/09/03 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
js实现鼠标点击页面弹出自定义文字效果
2019/12/24 Javascript
vue绑定数字类型 value为数字的实例
2020/08/31 Javascript
python opencv 图像尺寸变换方法
2018/04/02 Python
对numpy的array和python中自带的list之间相互转化详解
2018/04/13 Python
python创造虚拟环境方法总结
2019/03/04 Python
Django CSRF跨站请求伪造防护过程解析
2019/07/31 Python
Django Python 获取请求头信息Content-Range的方法
2019/08/06 Python
Flask框架搭建虚拟环境的步骤分析
2019/12/21 Python
Selenium使用Chrome模拟手机浏览器方法解析
2020/04/10 Python
Python try except异常捕获机制原理解析
2020/04/18 Python
pytorch 限制GPU使用效率详解(计算效率)
2020/06/27 Python
TOWER London官网:鞋子、靴子、运动鞋等
2019/07/14 全球购物
乌克兰在线药房:Аптека24
2019/10/30 全球购物
Java面试题汇总
2015/12/06 面试题
金融管理毕业生求职信
2014/03/03 职场文书
幼儿园中班评语大全
2014/04/17 职场文书
党代会心得体会
2014/09/04 职场文书
研究生导师推荐信
2014/09/06 职场文书
2015年个人审计工作总结
2015/04/07 职场文书
《灰雀》教学反思
2016/02/19 职场文书
js之ajax文件上传
2021/05/13 Javascript
Python自动化工具之实现Excel转Markdown表格
2022/04/08 Python
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript