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简单调用MySQL存储过程并获得返回值的方法
Jul 20 Python
python利用Guetzli批量压缩图片
Mar 23 Python
Python cookbook(数据结构与算法)筛选及提取序列中元素的方法
Mar 19 Python
对python读写文件去重、RE、set的使用详解
Dec 11 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
django 捕获异常和日志系统过程详解
Jul 18 Python
python解释器spython使用及原理解析
Aug 24 Python
Mac 使用python3的matplot画图不显示的解决
Nov 23 Python
python3获取文件中url内容并下载代码实例
Dec 27 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
Feb 12 Python
Python性能测试工具Locust安装及使用
Dec 01 Python
PySwarms(Python粒子群优化工具包)的使用:GlobalBestPSO例子解析
Apr 05 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二分法在IP地址查询中的应用
2008/08/12 PHP
PHP伪造referer实例代码
2008/09/20 PHP
PHP 获取远程文件内容的函数代码
2010/03/24 PHP
PHPExcel笔记, mpdf导出
2016/05/03 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
JavaScript 给汉字排序实例代码
2008/06/28 Javascript
JQuery autocomplete 使用手册
2010/04/01 Javascript
JavaScript 以对象为索引的关联数组
2010/05/19 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
js实现的牛顿摆效果
2015/03/31 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
2016/05/30 Javascript
详解react使用react-bootstrap当轮子造车
2017/08/15 Javascript
解决vue 按钮多次点击重复提交数据问题
2018/05/10 Javascript
javascript设计模式 ? 组合模式原理与应用实例分析
2020/04/14 Javascript
Python实现堆排序的方法详解
2016/05/03 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
Pyqt实现无边框窗口拖动以及窗口大小改变
2018/04/19 Python
pandas.dataframe按行索引表达式选取方法
2018/10/30 Python
django 快速启动数据库客户端程序的方法示例
2019/08/16 Python
Python上下文管理器类和上下文管理器装饰器contextmanager用法实例分析
2019/11/07 Python
python文字转语音的实例代码分析
2019/11/12 Python
python 类之间的参数传递方式
2019/12/20 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
罗马尼亚在线杂货店:Pilulka.ro
2019/09/28 全球购物
俄罗斯在线手表和珠宝商店:AllTime
2019/09/28 全球购物
香港百佳网上超级市场:PARKNSHOP.com
2020/06/10 全球购物
药学专业毕业生求职信
2013/10/20 职场文书
简历上的自我评价
2014/02/03 职场文书
幼儿园教师演讲稿
2014/05/06 职场文书
学校节能宣传周活动总结
2014/07/09 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
体育委员竞选稿
2015/11/21 职场文书
Pytorch 实现变量类型转换
2021/05/17 Python
pytorch中F.avg_pool1d()和F.avg_pool2d()的使用操作
2021/05/22 Python
怎么用Python识别手势数字
2021/06/07 Python