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中easy_install 和 pip 的安装及使用
Jun 05 Python
Python使用plotly绘制数据图表的方法
Jul 18 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
python K近邻算法的kd树实现
Sep 06 Python
Python检查和同步本地时间(北京时间)的实现方法
Dec 03 Python
详解如何设置Python环境变量?
May 13 Python
Python批量查询关键词微信指数实例方法
Jun 27 Python
linux中如何使用python3获取ip地址
Jul 15 Python
Pytorch根据layers的name冻结训练方式
Jan 06 Python
python使用梯度下降算法实现一个多线性回归
Mar 24 Python
python实现猜数游戏
Mar 27 Python
Keras loss函数剖析
Jul 06 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 google或baidu分页代码
2009/11/26 PHP
PHP技术开发技巧分享
2010/03/23 PHP
php+mysql 实现身份验证代码
2010/03/24 PHP
如何在symfony中导出为CSV文件中的数据
2011/10/06 PHP
PHP CURL CURLOPT参数说明(curl_setopt)
2013/09/30 PHP
用PHP的socket实现客户端到服务端的通信实例详解
2017/02/04 PHP
PHP自定义函数实现数组比较功能示例
2017/10/19 PHP
PHP 实现文件压缩解压操作的方法
2019/06/14 PHP
PHP安装扩展mcrypt以及相关依赖项深入讲解
2021/03/04 PHP
javascript 有趣而诡异的数组
2009/04/06 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
简体中文转换繁体中文(实现代码)
2013/12/25 Javascript
JS对象转换为Jquery对象示例
2014/01/26 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
zepto与jquery的区别及zepto的不同使用8条小结
2016/07/28 Javascript
JSON 必知必会 观后记
2016/10/27 Javascript
Bootstrap路径导航与分页学习使用
2017/02/08 Javascript
canvas实现简易的圆环进度条效果
2017/02/28 Javascript
js字符限制(字符截取) 一个中文汉字算两个字符
2017/09/12 Javascript
JS库中的Particles.js在vue上的运用案例分析
2017/09/13 Javascript
Vuex 进阶之模块化组织详解
2018/01/12 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
Koa 使用小技巧(小结)
2018/10/22 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
elementUi vue el-radio 监听选中变化的实例代码
2019/06/28 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
[01:09:10]NB vs Liquid Supermajor小组赛 A组胜者组决赛 BO3 第一场 6.2
2018/06/04 DOTA
python实现获取序列中最小的几个元素
2014/09/25 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
浅谈python新式类和旧式类区别
2019/04/26 Python
Python中的asyncio代码详解
2019/06/10 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
pip安装tensorflow的坑的解决
2020/04/19 Python
2020年10款优秀的Python第三方库,看看有你中意的吗?
2021/01/12 Python
英国计算机商店:Technextday
2019/12/28 全球购物
社会实践活动报告
2015/02/05 职场文书