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自定义进程池实例分析【生产者、消费者模型问题】
Sep 19 Python
python 实现删除文件或文件夹实例详解
Dec 04 Python
Python列表list内建函数用法实例分析【insert、remove、index、pop等】
Jul 24 Python
numpy判断数值类型、过滤出数值型数据的方法
Jun 09 Python
Python中文件的写入读取以及附加文字方法
Jan 23 Python
Django如何将URL映射到视图
Jul 29 Python
关于pytorch多GPU训练实例与性能对比分析
Aug 19 Python
在Ubuntu 20.04中安装Pycharm 2020.1的图文教程
Apr 30 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
python logging 重复写日志问题解决办法详解
Aug 04 Python
python安装第三方库如xlrd的方法
Oct 31 Python
Python批量解压&压缩文件夹的示例代码
Apr 04 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
overlord人气高涨,却被菲利普频繁举报,第四季很难在国内上映
2020/05/06 日漫
谈谈PHP的输入输出流
2007/02/14 PHP
php dirname(__FILE__) 获取当前文件的绝对路径
2011/06/28 PHP
CodeIgniter框架验证码类库文件与用法示例
2017/03/18 PHP
laravel5.2表单验证,并显示错误信息的实例
2019/09/29 PHP
Laravel 模型使用软删除-左连接查询-表起别名示例
2019/10/24 PHP
浅谈PHP中的那些魔术常量
2020/12/02 PHP
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
2016/09/02 Javascript
JS实现的验证身份证及获取地区功能示例
2017/01/16 Javascript
使用AngularJS编写多选按钮选中时触发指定方法的指令代码详解
2017/07/24 Javascript
推荐10款扩展Web表单的JS插件
2017/12/25 Javascript
微信小程序修改swiper默认指示器样式的实例代码
2018/07/18 Javascript
小程序云开发实战小结
2018/10/25 Javascript
React 实现拖拽功能的示例代码
2019/01/06 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
详解微信小程序胶囊按钮返回|首页自定义导航栏功能
2019/06/14 Javascript
vue 全局环境切换问题
2019/10/27 Javascript
node.js中 redis 的安装和基本操作示例
2020/02/10 Javascript
vue实现输入框自动跳转功能
2020/05/20 Javascript
[01:07:41]IG vs VGJ.T 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
详解Python编程中包的概念与管理
2015/10/16 Python
Pycharm学习教程(6) Pycharm作为Vim编辑器使用
2017/05/03 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
详解Python3 pickle模块用法
2019/09/16 Python
Python3实现zip分卷压缩过程解析
2019/10/09 Python
Pycharm安装并配置jupyter notebook的实现
2020/05/18 Python
Python3创建Django项目的几种方法(3种)
2020/06/03 Python
python操作微信自动发消息的实现(微信聊天机器人)
2020/07/14 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
css3打造一款漂亮的卡哇伊按钮
2013/03/20 HTML / CSS
CSS3制作苹果风格键盘特效
2015/02/26 HTML / CSS
html5时钟实现代码
2010/10/22 HTML / CSS
党员检讨书
2014/10/13 职场文书
python3 删除所有自定义变量的操作
2021/04/08 Python
HDFS免重启挂载新磁盘
2022/04/06 Servers