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程序中进行文件读取和写入操作的教程
Apr 28 Python
Python保存MongoDB上的文件到本地的方法
Mar 16 Python
Python使用ntplib库同步校准当地时间的方法
Jul 02 Python
Python实现小数转化为百分数的格式化输出方法示例
Sep 20 Python
Python中import机制详解
Nov 14 Python
Python中时间datetime的处理与转换用法总结
Feb 18 Python
Python3 tkinter 实现文件读取及保存功能
Sep 12 Python
TensorFlow通过文件名/文件夹名获取标签,并加入队列的实现
Feb 17 Python
基于python3的socket聊天编程
Feb 17 Python
matlab灰度图像调整及imadjust函数的用法详解
Feb 27 Python
解决django 向mysql中写入中文字符出错的问题
May 18 Python
Python实现ElGamal加密算法的示例代码
Jun 19 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 addslashes和mysql_real_escape_string
2010/01/24 PHP
浅析使用Turck-mmcache编译来加速、优化PHP代码
2013/06/20 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
用PHP代码在网页上生成图片
2015/07/01 PHP
PHP书写格式详解(必看)
2016/05/23 PHP
laravel框架数据库操作、查询构建器、Eloquent ORM操作实例分析
2019/12/20 PHP
用JS剩余字数计算的代码
2008/07/03 Javascript
js利用Array.splice实现Array的insert/remove
2009/01/13 Javascript
学习ExtJS border布局
2009/10/08 Javascript
javascript Math.random()随机数函数
2009/11/04 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
2017/02/20 Javascript
JS实现上传图片实时预览功能
2017/05/22 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
echarts学习笔记之箱线图的分析与绘制详解
2017/11/22 Javascript
微信小程序实现弹出菜单功能
2018/06/12 Javascript
Vue press 支持图片放大功能的实例代码
2018/11/09 Javascript
JS使用正则表达式提交页面验证的代码
2019/10/16 Javascript
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
浅谈Python中copy()方法的使用
2015/05/21 Python
python中利用队列asyncio.Queue进行通讯详解
2017/09/10 Python
Python实现PS滤镜的旋转模糊功能示例
2018/01/20 Python
python算法题 链表反转详解
2019/07/02 Python
Python 读取用户指令和格式化打印实现解析
2019/09/02 Python
python numpy数组复制使用实例解析
2020/01/10 Python
TensorFlow自定义损失函数来预测商品销售量
2020/02/05 Python
python如何导入依赖包
2020/07/13 Python
交通事故赔偿协议书范本
2014/04/15 职场文书
企业文化宣传标语
2014/06/09 职场文书
2014年中秋寄语
2014/08/11 职场文书
2015年幼儿园个人工作总结
2015/04/25 职场文书
监守自盗观后感
2015/06/10 职场文书
导游词之白茶谷九龙峡
2019/10/23 职场文书
Python实现8种常用抽样方法
2021/06/27 Python