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开发中module模块用法实例分析
Nov 12 Python
python用BeautifulSoup库简单爬虫实例分析
Jul 30 Python
解决win64 Python下安装PIL出错问题(图解)
Sep 03 Python
python生成多个只含0,1元素的随机数组或列表的实例
Nov 12 Python
对python中xlsx,csv以及json文件的相互转化方法详解
Dec 25 Python
使用selenium模拟登录解决滑块验证问题的实现
May 10 Python
python从list列表中选出一个数和其对应的坐标方法
Jul 20 Python
将Pytorch模型从CPU转换成GPU的实现方法
Aug 19 Python
python数值基础知识浅析
Nov 19 Python
PyQt中使用QtSql连接MySql数据库的方法
Jul 28 Python
通过代码实例了解Python3编程技巧
Oct 13 Python
如何用Python徒手写线性回归
Jan 25 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与SQL注入攻击[二]
2007/04/17 PHP
PHP 上传文件的方法(类)
2009/07/30 PHP
基于php验证码函数的使用示例
2013/05/03 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
PHP strtotime函数用法、实现原理和源码分析
2015/02/04 PHP
PHP验证码生成原理和实现
2016/01/24 PHP
PHP+JQuery+Ajax实现分页方法详解
2016/08/06 PHP
javascript下给元素添加事件的方法与代码
2007/08/13 Javascript
jquery ready()的几种实现方法小结
2010/06/18 Javascript
使用JQuery快速实现Tab的AJAX动态载入(实例讲解)
2013/12/11 Javascript
JavaScript DOM事件(笔记)
2015/04/08 Javascript
JavaScript生成福利彩票双色球号码
2015/05/15 Javascript
jQuery实现鼠标经过时高亮,同时其他同级元素变暗的效果
2016/09/18 Javascript
详解利用 Vue.js 实现前后端分离的RBAC角色权限管理
2017/09/15 Javascript
浅谈vue项目优化之页面的按需加载(vue+webpack)
2017/12/11 Javascript
vue-cli常用设置总结
2018/02/24 Javascript
bootstrap table实现iview固定列的效果实例代码详解
2019/09/30 Javascript
Vue.js获取手机系统型号、版本、浏览器类型的示例代码
2020/05/10 Javascript
[01:02:26]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第二场 1月18日
2021/03/11 DOTA
Python 列表(List)操作方法详解
2014/03/11 Python
spyder常用快捷键(分享)
2017/07/19 Python
Python2随机数列生成器简单实例
2017/09/04 Python
Python升级导致yum、pip报错的解决方法
2017/09/06 Python
Android分包MultiDex策略详解
2017/10/30 Python
python 使用 requests 模块发送http请求 的方法
2018/12/09 Python
python3的url编码和解码,自定义gbk、utf-8的例子
2019/08/22 Python
Python API自动化框架总结
2019/11/12 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
2020/03/31 Python
美国五金商店:Ace Hardware
2018/03/27 全球购物
入党思想汇报怎么写
2014/04/03 职场文书
大学生学习面向未来的赶考思想汇报
2014/09/12 职场文书
交通事故协议书范文
2014/10/23 职场文书
为自己工作观后感
2015/06/11 职场文书
小学生读书笔记
2015/07/01 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript
JS封装cavans多种滤镜组件
2022/02/15 Javascript