Django中在xadmin中集成DjangoUeditor过程详解


Posted in Python onJuly 24, 2019

环境

python版本:3.6

django:1.10.8

1.下载xadmin

https://github.com/sshwsfc/xadmin

下载DjangoUeditor

https://github.com/twz915/DjangoUeditor3

2.直接将xadmin和DjangoUeditor集成在pycharm里,在项目下新建一个文件夹extra_apps,将与xadmin、DjangoUeditor的同名文件复制在extra_apps下

Django中在xadmin中集成DjangoUeditor过程详解

3.在settings.py里注册DjangoUeditor

INSTALLED_APPS = [
 ...
 #xadmin第三方插件,实现富文本编辑
 'DjangoUeditor'
]

4.在url里对其进行配置

url(r'^ueditor/',include('DjangoUeditor.urls'))

5.在xadmin中添加插件ueditor

Django中在xadmin中集成DjangoUeditor过程详解

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

6.在xadmin-》plugins-》__init__.py中添加ueditor

PLUGINS = (
 'actions',
 'filters',
 'bookmark',
 'export',
 'layout',
 'refresh',
 'details',
 'editable',
 'relate',
 'chart',
 'ajax',
 'relfield',
 'inline',
 'topnav',
 'portal',
 'quickform',
 'wizard',
 'images',
 'auth',
 'multiselect',
 'themes',
 'aggregation',
 'mobile',
 'passwords',
 'sitemenu',
 'language',
 'quickfilter',
 'sortablelist',
 'importexport'
 'ueditor'
)

7.将ueditor添加到adminx.py中

这里的NoticeContent是指使用UEditorField的字段

class NoticeAdmin(object): list_display = ['NoticeTitle', 'NoticeContent','NoticeDesc','NoticeCategory', 'NoticeData','NoticeUser'] style_fields={"NoticeContent":"ueditor"}

8.运行结果:

Django中在xadmin中集成DjangoUeditor过程详解

9.前端显示需要加上:

{% autoescape off %}
{% endautoescape %}

注意:要想在富文本编辑框中显示出图片,必须在settings.py里设置路径:

MEDIA_ROOT = os.path.join(BASE_DIR, 'media').replace('\\', '/')  #设置静态文件路径为主目录下的media文件夹
MEDIA_URL = '/media/'

在与项目同名的文件下的urls.py中添加:

urlpatterns = [
 url('admin/', admin.site.urls),
 url(r'^ueditor/',include('DjangoUeditor.urls')),
]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

否则无法显示图片。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Django框架中编写Context处理器的方法
Jul 20 Python
Python下载指定页面上图片的方法
May 12 Python
Python遍历文件夹和读写文件的实现代码
Aug 28 Python
python中redis的安装和使用
Dec 04 Python
详解Python里使用正则表达式的ASCII模式
Nov 02 Python
Python设计模式之备忘录模式原理与用法详解
Jan 15 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
使用Python调取任意数字资产钱包余额功能
Aug 15 Python
python保留小数位的三种实现方法
Jan 07 Python
Python如何在单元测试中给对象打补丁
Aug 03 Python
Python Matplotlib绘图基础知识代码解析
Aug 31 Python
python学习之panda数据分析核心支持库
May 07 Python
Django 权限认证(根据不同的用户,设置不同的显示和访问权限)
Jul 24 #Python
Django 创建/删除用户的示例代码
Jul 24 #Python
python3.6+django2.0+mysql搭建网站过程详解
Jul 24 #Python
简单了解python 邮件模块的使用方法
Jul 24 #Python
python 根据字典的键值进行排序的方法
Jul 24 #Python
如何使用Flask-Migrate拓展数据库表结构
Jul 24 #Python
Python定时任务工具之APScheduler使用方式
Jul 24 #Python
You might like
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
php jquery 多文件上传简单实例
2013/12/23 PHP
PHP+Jquery与ajax相结合实现下拉淡出瀑布流效果【无需插件】
2016/05/06 PHP
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
JavaScript 上万关键字瞬间匹配实现代码
2013/07/07 Javascript
js二维数组排序的简单示例代码
2014/01/24 Javascript
JS判断、校验MAC地址的2个实例
2014/05/05 Javascript
Linux下使用jq友好的打印JSON技巧分享
2014/11/18 Javascript
ES6新特征数字、数组、字符串
2016/10/01 Javascript
js格式化时间的简单实例
2016/11/27 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
2017/11/13 jQuery
详解Vue This$Store总结
2018/12/17 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
2019/02/21 Javascript
浅谈Javascript常用正则表达式应用
2019/03/08 Javascript
Vue $mount实战之实现消息弹窗组件
2019/04/22 Javascript
JavaScript中的函数申明、函数表达式、箭头函数
2019/12/06 Javascript
详解node和ES6的模块导出与导入
2020/02/19 Javascript
vue实现动态给id赋值,点击事件获取当前点击的元素的id操作
2020/11/09 Javascript
python实现simhash算法实例
2014/04/25 Python
Python的Flask框架中实现简单的登录功能的教程
2015/04/20 Python
python中self原理实例分析
2015/04/30 Python
详解在Python程序中自定义异常的方法
2015/10/16 Python
Python聊天室实例程序分享
2016/01/05 Python
windows下python之mysqldb模块安装方法
2017/09/07 Python
python数据批量写入ScrolledText的优化方法
2018/10/11 Python
在Pandas中给多层索引降级的方法
2018/11/16 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
python代码实现图书管理系统
2020/11/30 Python
面试后的感谢信范文
2014/02/01 职场文书
物理教学随笔感言
2014/02/22 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
《神奇的克隆》教学反思
2014/04/10 职场文书
美丽的大脚观后感
2015/06/03 职场文书
男生贾里读书笔记
2015/06/30 职场文书
JavaScript的function函数详细介绍
2021/11/20 Javascript