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 排列组合之itertools
Mar 20 Python
Python CSV模块使用实例
Apr 09 Python
Python3.x中自定义比较函数
Apr 24 Python
python实现ping的方法
Jul 06 Python
python文本数据相似度的度量
Mar 12 Python
Python自定义装饰器原理与用法实例分析
Jul 16 Python
Python双向循环链表实现方法分析
Jul 30 Python
python3实现二叉树的遍历与递归算法解析(小结)
Jul 03 Python
Python3.5 win10环境下导入kera/tensorflow报错的解决方法
Dec 19 Python
python+selenium+chrome批量文件下载并自动创建文件夹实例
Apr 27 Python
Django Session和Cookie分别实现记住用户登录状态操作
Jul 02 Python
python对输出的奇数偶数排序实例代码
Dec 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
在服务端进行目录建立、删除,文件上传、删除的过程的php代码
2008/09/10 PHP
php实现的支持断点续传的文件下载类
2014/09/23 PHP
PHP输出两个数字中间有多少个回文数的方法
2015/03/23 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
laravel unique验证、确认密码confirmed验证以及密码修改验证的方法
2019/10/16 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
javascript 三种方法实现获得和设置以及移除元素属性
2013/03/20 Javascript
jquery foreach使用示例
2013/09/12 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
Javascript实现Web颜色值转换
2015/02/05 Javascript
JS实现简单易用的手机端浮动窗口显示效果
2016/09/07 Javascript
Jquery针对tr td的一些实用操作方法(必看篇)
2016/10/05 Javascript
微信小程序购物商城系统开发系列-工具篇的介绍
2016/11/21 Javascript
JavaScript数据结构之二叉树的删除算法示例
2017/04/13 Javascript
手把手教你用Node.js爬虫爬取网站数据的方法
2018/07/05 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
Vue结合后台导入导出Excel问题详解
2019/02/19 Javascript
VUE组件中的 Drawer 抽屉实现代码
2019/08/06 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
JS实现斐波那契数列的五种方式(小结)
2020/09/09 Javascript
Python列表(list)常用操作方法小结
2015/02/02 Python
解决Python出现_warn_unsafe_extraction问题的方法
2016/03/24 Python
python获取指定时间差的时间实例详解
2017/04/11 Python
python tornado微信开发入门代码
2018/08/24 Python
Python爬虫爬取Bilibili弹幕过程解析
2019/10/10 Python
浅析python redis的连接及相关操作
2019/11/07 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
自动化系在校本科生求职信
2013/10/23 职场文书
医护人员英文求职信范文
2013/11/26 职场文书
未婚证明书模板
2014/10/08 职场文书
后进生评语大全
2015/01/04 职场文书
2015年小学一年级班主任工作总结
2015/05/21 职场文书
2016年企业安全生产月活动总结
2016/04/06 职场文书