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中用PIL库批量给图片加上序号的教程
May 06 Python
Python工程师面试题 与Python Web相关
Jan 14 Python
实例讲解Python中函数的调用与定义
Mar 14 Python
python django使用haystack:全文检索的框架(实例讲解)
Sep 27 Python
分享6个隐藏的python功能
Dec 07 Python
Python实现一个数组除以一个数的例子
Jul 20 Python
python字符串替换re.sub()方法解析
Sep 18 Python
python with语句的原理与用法详解
Mar 30 Python
django 装饰器 检测登录状态操作
Jul 02 Python
浅谈怎么给Python添加类型标注
Jun 08 Python
Django路由层如何获取正确的url
Jul 15 Python
使用Python拟合函数曲线
Apr 14 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人民币金额转大写实例代码
2015/10/02 PHP
javascript html 静态页面传参数
2009/04/10 Javascript
js验证是否为数字的总结
2013/04/14 Javascript
用js来获取上传的文件名纯粹是为了美化而用
2013/10/23 Javascript
jquery中change()用法实例分析
2015/02/06 Javascript
JS获取图片高度宽度的方法分享
2015/04/17 Javascript
bootstrap table之通用方法( 时间控件,导出,动态下拉框, 表单验证 ,选中与获取信息)代码分享
2017/01/24 Javascript
angular4 如何在全局设置路由跳转动画的方法
2017/08/30 Javascript
vue 实现数字滚动增加效果的实例代码
2018/07/06 Javascript
关于vue表单提交防双/多击的例子
2019/10/31 Javascript
[52:10]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第二场 6.3
2018/06/04 DOTA
python的绘图工具matplotlib使用实例
2014/07/03 Python
基于python的七种经典排序算法(推荐)
2016/12/08 Python
python模仿网页版微信发送消息功能
2018/02/24 Python
Python3随机漫步生成数据并绘制
2018/08/27 Python
python url 参数修改方法
2018/12/26 Python
pymysql的简单封装代码实例
2020/01/08 Python
python3连接mysql获取ansible动态inventory脚本
2020/01/19 Python
IntelliJ 中配置 Anaconda的过程图解
2020/06/01 Python
Python xlrd模块导入过程及常用操作
2020/06/10 Python
python如何变换环境
2020/07/21 Python
Python利用myqr库创建自己的二维码
2020/11/24 Python
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
潘多拉意大利官方网上商城:网上选购PANDORA珠宝
2018/10/07 全球购物
澳大利亚宠物食品和用品商店:PETstock
2020/01/02 全球购物
劳资员岗位职责
2013/11/11 职场文书
小学教师国培感言
2014/02/08 职场文书
班级学习计划书
2014/04/27 职场文书
甲乙双方合作协议书
2014/10/13 职场文书
导游词范文之颐和园/重庆/云台山
2019/09/10 职场文书
Nginx 过滤静态资源文件的访问日志的实现
2021/03/31 Servers
简单总结SpringMVC拦截器的使用方法
2021/06/28 Java/Android
Redis 常见使用场景
2021/08/30 Redis
javascript条件式访问属性和箭头函数介绍
2021/11/17 Javascript
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA
DQL数据查询语句使用示例
2022/12/24 MySQL