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中实现结构相似的函数调用方法
Mar 10 Python
Python实现豆瓣图片下载的方法
May 25 Python
SQLite3中文编码 Python的实现
Jan 11 Python
详解关于Django中ORM数据库迁移的配置
Oct 08 Python
python实现逐个读取txt字符并修改
Dec 24 Python
python实现播放音频和录音功能示例代码
Dec 30 Python
python 实现提取某个索引中某个时间段的数据方法
Feb 01 Python
python实现自动化上线脚本的示例
Jul 01 Python
pytorch中 gpu与gpu、gpu与cpu 在load时相互转化操作
May 25 Python
使用Keras加载含有自定义层或函数的模型操作
Jun 10 Python
使用PyCharm官方中文语言包汉化PyCharm
Nov 18 Python
浅谈Python协程asyncio
Jun 20 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时的知识积累总结
2013/06/07 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
yii2中LinkPager增加总页数和总记录数的实例
2017/08/28 PHP
php输出控制函数和输出函数生成静态页面
2019/06/27 PHP
PHP接口类(interface)的定义、特点和应用示例
2020/05/18 PHP
非常强大的 jQuery.AsyncBox 弹出对话框插件
2011/08/29 Javascript
PHP中使用微秒计算脚本执行时间例子
2014/11/19 Javascript
javascript去除字符串左右两端的空格
2015/02/05 Javascript
jQuery仿Flash上下翻动的中英文导航菜单实例
2015/03/10 Javascript
简介JavaScript中Math.LOG10E属性的使用
2015/06/14 Javascript
js预加载图片方法汇总
2015/06/15 Javascript
javascript实现相同事件名称,不同命名空间的调用方法
2015/06/26 Javascript
js实现仿MSN带关闭功能的右下角弹窗代码
2015/09/04 Javascript
js检测用户输入密码强度
2015/10/22 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
javascript宿主对象之window.navigator详解
2016/09/07 Javascript
node.js缺少mysql模块运行报错的解决方法
2016/11/13 Javascript
基于Vue实现timepicker
2017/04/25 Javascript
JS触摸与手势事件详解
2017/05/09 Javascript
基于js的变量提升和函数提升(详解)
2017/09/17 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
angular 内存溢出的问题解决
2018/07/12 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
2019/05/01 Javascript
利用百度echarts实现图表功能简单入门示例【附源码下载】
2019/06/10 Javascript
[01:02:45]完美世界DOTA2联赛 LBZS vs Forest 第三场 11.07
2020/11/09 DOTA
Python Web框架Flask中使用新浪SAE云存储实例
2015/02/08 Python
Python中利用函数装饰器实现备忘功能
2015/03/30 Python
python爬虫之BeautifulSoup 使用select方法详解
2017/10/23 Python
Python logging自定义字段输出及打印颜色
2020/11/30 Python
一套Java笔试题
2016/08/20 面试题
中学生在校期间的自我评价分享
2013/11/13 职场文书
2014年房地产销售工作总结
2014/12/01 职场文书
数学教师个人总结
2015/02/06 职场文书
百年孤独读书笔记
2015/06/29 职场文书
利用Python实现翻译HTML中的文本字符串
2022/06/21 Python