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 相关文章推荐
linux系统使用python获取cpu信息脚本分享
Jan 15 Python
Python使用中文正则表达式匹配指定中文字符串的方法示例
Jan 20 Python
Python书单 不将就
Jul 11 Python
Python实现桶排序与快速排序算法结合应用示例
Nov 22 Python
python实现逐个读取txt字符并修改
Dec 24 Python
Python中如何使用if语句处理列表实例代码
Feb 24 Python
很酷的python表白工具 你喜欢我吗
Apr 11 Python
解决pycharm 远程调试 上传 helpers 卡住的问题
Jun 27 Python
用Python从0开始实现一个中文拼音输入法的思路详解
Jul 20 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
Feb 09 Python
Django model class Meta原理解析
Nov 14 Python
python程序实现BTC(比特币)挖矿的完整代码
Jan 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 heredoc和phpwind的模板技术使用方法小结
2008/03/28 PHP
PHP+MYSQL中文乱码问题
2015/07/01 PHP
php如何获取文件的扩展名
2015/10/28 PHP
php 调用ffmpeg获取视频信息的简单实现
2017/04/03 PHP
php压缩文件夹最新版
2018/07/18 PHP
php和nginx交互实例讲解
2019/09/24 PHP
laravel中的fillable和guarded属性详解
2019/10/23 PHP
一个JavaScript继承的实现
2006/10/24 Javascript
IE8 chrome中table隔行换色解决办法
2010/07/09 Javascript
基于jquery的横向滚动条(滑动条)
2011/02/24 Javascript
千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码
2013/12/05 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
jquery中EasyUI实现异步树
2015/03/01 Javascript
Labelauty?jQuery单选框/复选框美化插件分享
2015/09/26 Javascript
AngularJS Bootstrap详细介绍及实例代码
2016/07/28 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
浅谈javascript控制HTML5的全屏操控,浏览器兼容的问题
2016/10/10 Javascript
有趣的bootstrap走动进度条
2016/12/01 Javascript
Node.js学习之查询字符串解析querystring详解
2017/09/28 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
ES6入门教程之let、const的使用方法
2019/04/13 Javascript
解析vue、angular深度作用选择器
2019/09/11 Javascript
NodeJS http模块用法示例【创建web服务器/客户端】
2019/11/05 NodeJs
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
python创建和使用字典实例详解
2013/11/01 Python
Python中使用Flask、MongoDB搭建简易图片服务器
2015/02/04 Python
python中使用iterrows()对dataframe进行遍历的实例
2018/06/09 Python
TensorFlow 读取CSV数据的实例
2020/02/05 Python
python 两种方法删除空文件夹
2020/09/29 Python
python基于win32api实现键盘输入
2020/12/09 Python
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
学生请假条
2014/04/11 职场文书
会计专业毕业生求职信
2014/07/04 职场文书
运动会广播稿200字
2014/10/18 职场文书
处级干部考察材料
2014/12/24 职场文书
生死抉择观后感
2015/06/09 职场文书