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 相关文章推荐
python解析xml模块封装代码
Feb 07 Python
Python 基础之字符串string详解及实例
Apr 01 Python
详解Django中间件执行顺序
Jul 16 Python
python 找出list中最大或者最小几个数的索引方法
Oct 30 Python
Python数据类型之Dict字典实例详解
May 07 Python
Pyqt5 基本界面组件之inputDialog的使用
Jun 25 Python
linux中如何使用python3获取ip地址
Jul 15 Python
Python 等分切分数据及规则命名的实例代码
Aug 16 Python
python多进程并行代码实例
Sep 30 Python
wxPython实现绘图小例子
Nov 19 Python
使用 Python 读取电子表格中的数据实例详解
Apr 17 Python
Python实现GIF图倒放
Jul 16 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
《PHP边学边教》(01.开篇――准备工作)
2006/12/13 PHP
php获取后台Job管理的实现代码
2011/06/10 PHP
PHP中file_exists()判断中文文件名无效的解决方法
2014/11/12 PHP
YII Framework框架教程之日志用法详解
2016/03/14 PHP
使用XHProf查找PHP性能瓶颈的实例
2017/12/13 PHP
JavaScript setTimeout和setInterval的使用方法 说明
2010/03/25 Javascript
javascript利用初始化数据装配模版的实现代码
2010/11/17 Javascript
深入理解JavaScript系列(11) 执行上下文(Execution Contexts)
2012/01/15 Javascript
JS 操作Array数组的方法及属性实例解析
2014/01/08 Javascript
javascript点击按钮实现隐藏显示切换效果
2016/02/03 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
全面解析JavaScript的Backbone.js框架中的Router路由
2016/05/05 Javascript
详解vue中引入stylus及报错解决方法
2017/09/22 Javascript
基于模板引擎Jade的应用(详解)
2017/12/12 Javascript
node.js环境搭建图文详解
2018/09/19 Javascript
Vue项目中使用WebUploader实现文件上传的方法
2019/07/21 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
VSCode Vue开发推荐插件和VSCode快捷键(小结)
2020/08/08 Javascript
Vue项目打包部署到apache服务器的方法步骤
2021/02/01 Vue.js
python实现给微信指定好友定时发送消息
2019/04/29 Python
numpy.array 操作使用简单总结
2019/11/08 Python
python读取xml文件方法解析
2020/08/04 Python
使用Python爬取Json数据的示例代码
2020/12/07 Python
html5 canvas 使用示例
2010/10/22 HTML / CSS
武汉某公司的C#笔试题面试题
2015/12/25 面试题
护士的岗位职责
2013/12/04 职场文书
防沙治沙典型材料
2014/05/07 职场文书
教师考核鉴定意见
2015/06/05 职场文书
实验室安全管理制度
2015/08/05 职场文书
管理者日常工作必备:22条企业管理流程模板!
2019/07/12 职场文书
python实现进度条的多种实现
2021/04/29 Python
python基于tkinter实现gif录屏功能
2021/05/19 Python
Python中如何处理常见报错
2022/01/18 Python
canvas实现贪食蛇的实践
2022/02/15 Javascript
Java9新特性之Module模块化编程示例演绎
2022/03/16 Java/Android
解决vue中provide inject的响应式监听
2022/04/19 Vue.js