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中使用haystack实现django全文检索搜索引擎功能
Aug 26 Python
python生成ppt的方法
Jun 07 Python
pandas.dataframe中根据条件获取元素所在的位置方法(索引)
Jun 07 Python
python 统计列表中不同元素的数量方法
Jun 29 Python
Python 数值区间处理_对interval 库的快速入门详解
Nov 16 Python
python使用pandas处理大数据节省内存技巧(推荐)
May 05 Python
详解Pandas之容易让人混淆的行选择和列选择
Jul 10 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
python scipy卷积运算的实现方法
Sep 16 Python
Python+Tensorflow+CNN实现车牌识别的示例代码
Oct 11 Python
Python 脚本的三种执行方式小结
Dec 21 Python
Python 爬取必应壁纸的实例讲解
Feb 24 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作的文本留言本的例子(二)
2006/10/09 PHP
PHP setcookie指定domain参数后,在IE下设置cookie失效的解决方法
2011/09/09 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
php创建多级目录的方法
2015/03/24 PHP
PHP简单处理表单输入的特殊字符的方法
2016/02/03 PHP
PHP中类属性与类静态变量的访问方法示例
2016/07/13 PHP
PHP屏蔽关键字实现方法
2016/11/17 PHP
thinkphp Apache配置重启Apache1 restart 出错解决办法
2017/02/15 PHP
Jquery 动态添加按钮实现代码
2010/05/06 Javascript
js 获取和设置css3 属性值的实现方法
2013/05/06 Javascript
jquery中子元素和后代元素的区别示例介绍
2014/04/02 Javascript
js下拉选择框与输入框联动实现添加选中值到输入框的方法
2015/08/17 Javascript
js实现input框文字动态变换显示效果
2015/08/19 Javascript
jQuery实现点击按钮弹出可关闭层的浮动层插件
2015/09/19 Javascript
JS中的hasOwnProperty()和isPrototypeOf()属性实例详解
2016/08/11 Javascript
微信小程序 PHP后端form表单提交实例详解
2017/01/12 Javascript
yarn的使用与升级Node.js的方法详解
2017/06/04 Javascript
JS逻辑运算符短路操作实例分析
2018/07/09 Javascript
js中位运算的运用实例分析
2018/12/11 Javascript
ES6 更易于继承的类语法的使用
2019/02/11 Javascript
[59:00]DOTA2-DPC中国联赛 正赛 Ehome vs PSG.LGD BO3 第一场 3月7日
2021/03/11 DOTA
Python对两个有序列表进行合并和排序的例子
2014/06/13 Python
Python检测QQ在线状态的方法
2015/05/09 Python
python实现比较类的两个instance(对象)是否相等的方法分析
2019/06/26 Python
使用python实现微信小程序自动签到功能
2020/04/27 Python
django orm模块中的 is_delete用法
2020/05/20 Python
Anaconda+vscode+pytorch环境搭建过程详解
2020/05/25 Python
C#实现启动一个进程
2016/10/01 面试题
店长岗位职责
2013/11/21 职场文书
护士2015年终工作总结
2015/04/29 职场文书
农村环境卫生倡议书
2015/04/29 职场文书
贷款工作证明模板
2015/06/12 职场文书
销售人员管理制度
2015/08/06 职场文书
Python IO文件管理的具体使用
2022/03/20 Python
Python可视化神器pyecharts之绘制箱形图
2022/07/07 Python