django xadmin 集成DjangoUeditor富文本编辑器

本文档记录自己的学习历程!

介绍

  • Ueditor HTML编辑器是百度开源的在线HTML编辑器,功能非常强大

    额外功能

  • 解决图片视频等无法上传显示问题

Ueditor下载地址 https://github.com/wsqy/DjangoUeditor.git

  • 解压后将 DjangoUeditor 文件夹复制到django项目目录下,跟app目录同级

修改app models

  • 导入UEditorField 模块
  • 增加需要富文本框的字段
from DjangoUeditor.models import UEditorField
class Post(models.Model):
    """文章"""
    STATUS_CHOICES = (
        (‘draft‘,‘草稿‘),
        (‘published‘,‘已发布‘),
        )
    ...
    body = UEditorField(‘内容‘, height=300, width=800,max_length=1024000000000,
                           default=u‘‘, blank=True, imagePath="images/",
                           toolbars=‘besttome‘, filePath=‘files/‘)
    ...
  • 说明:
    UEditorField继承自models.TextField,因此你可以直接将model里面定义的models.TextField直接改成UEditorField即可。<br>
    UEditorField提供了额外的参数:<br>
    toolbars:配置你想显示的工具栏,取值为mini,normal,full,besttome, 代表小,一般,全部,涂伟忠贡献的一种样式。如果默认的工具栏不符合您的要求,您可以在settings里面配置自己的显示按钮。参见后面介绍。<br>
    imagePath:图片上传的路径,如"images/",实现上传到"{{MEDIA_ROOT}}/images"文件夹<br>
    filePath:附件上传的路径,如"files/",实现上传到"{{MEDIA_ROOT}}/files"文件夹<br>
    scrawlPath:涂鸦文件上传的路径,如"scrawls/",实现上传到"{{MEDIA_ROOT}}/scrawls"文件夹,如果不指定则默认=imagepath<br>
    imageManagerPath:图片管理器显示的路径,如"imglib/",实现上传到"{{MEDIA_ROOT}}/imglib",如果不指定则默认=imagepath。<br>
    options:其他UEditor参数,字典类型。参见Ueditor的文档ueditor_config.js里面的说明。<br>
    css:编辑器textarea的CSS样式<br>
    width,height:编辑器的宽度和高度,以像素为单位。<br>
  • 初始化数据库
makemigrations
migrate

修改settings文件

  • 增加文件上传路径配置
MEDIA_URL=‘/upload/‘
MEDIA_ROOT = os.path.join(BASE_DIR, ‘upload/‘)#这个是在浏览器上访问该上传文件的url的前缀

修改xadmin的配置(如果用admin的话可以忽略)

  • 在项目下的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.js")  # 自己的静态目录
        nodes.append(js)

xadmin.site.register_plugin(UeditorPlugin, UpdateAdminView)
xadmin.site.register_plugin(UeditorPlugin, CreateAdminView)
  • 在xadmin\plugins\路径下的init.py文件下的PLUGINS项添加ueditor,如下最后一行为新增的
E:\items\blog_project\xadmin\plugins\__init__.py
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‘,
)

更改DjangoUeditor静态资源路径(重要)

  • 在项目下的static目录下新建ueditor目录
  • 把DjangoUeditor目录下的ueditor目录下的js文件移动到项目的static目录下的ueditor里

修改项目urls文件

  • 以下为新增项
from django.conf.urls import url,include
...
import xadmin
import  DjangoUeditor

urlpatterns = [
    url(r‘^xadmin/‘, xadmin.site.urls),
...
    url(r‘^ueditor/‘, include(‘DjangoUeditor.urls‘))
]
from django.conf import settings
if settings.DEBUG:
    from django.conf.urls.static import static
    urlpatterns += static(
        settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

结果

  • 重启项目,在后台可以看到富文本框就正常了
  • 效果图

原文地址:http://blog.51cto.com/9520268/2083041

时间: 2024-11-08 17:01:22

django xadmin 集成DjangoUeditor富文本编辑器的相关文章

Django集成百度富文本编辑器uEditor

UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码. 首先从ueEditor官网下载最新版本的包,目前官网上提供了ASP..NET.PHP.JSP版本的,django版本只有一个第三方个人开发的,但看上出配置起来稍微复杂一点. 这里不介绍uEditor的使用方法,也不过多解释uEditor的配置方法,官网上都有详细的文档和API介绍,下载的Demo中也有常用的方法的示例代码,这里主要介绍uEdi

django之百度Ueditor富文本编辑器后台集成

Python3 + Django2.0 百度Ueditor 富文本编辑器的集成 百度富文本编辑器官网地址:http://fex.baidu.com/ueditor/ 疑问:为什么要二次集成? 答案:因为百度富文本编辑器Ueditor没有对python的支持 步骤1: 在官网下载Ueditor的任意版本代码:http://ueditor.baidu.com/website/download.html#ueditor 步骤2: 将下载的代码放入到 django 项目中 步骤3:前端引用 在前端HTM

xadmin集成DjangoUeditor,以及编辑器的视频路径配置

稍微讲一下DjangoUeditor的配置,因为之前去找配置的时候东拼西凑的,所以自己写一下自己一步步配置的过程.首先我是再github上去下载下来,因为是当作第三方插件集成到xadmin中,所以不用pip安装,直接和xadmin放一个目录就ok了. 然后是在项目的设置里面进行配置,在INSTALLED_APPS中申明DjangoUeditor的存在, 这两步做完之后就找到xadmin的plugins目录,在目录下新建一个ueditor.py的文件,其中的代码如下: #!/usr/bin/env

在Vue2.0中集成UEditor 富文本编辑器

在vue的'项目中遇到了需要使用富文本编辑器的需求,在github上看了很多vue封装的editor插件,很多对图片上传和视频上传的支持并不是很好,最终还是决定使用UEditor. 这类的文章网上有很多,我进行了摸索.手写代码.汇总.排版,形成了这篇文章. 下载对应的UEditor源码 首先,去官网上下载UEditor的源码,根据你后台语言的不同下载对应的版本(PHP.Asp..Net.Jsp),下载地址. 下载之后,把资源放到 /static/ue/ 静态目录下.文档结构如下: (我把UEdi

Django框架中tinymce富文本编辑器的使用

1. 安装富文本模块 pip install tinymce 2. Django项目中注册添加配置. Setting文件中应用注册 'tinymce', 添加tinymce的基本设置.(高级-长600-宽-400) TINYMCE_DEFAULT_CONFIG = { 'theme': 'advanced', 'width': 600, 'height': 400, }  3. urls配置 添加tinymce配置 url(r'^tinymce/', include('tinymce.urls'

vue 集成百度富文本编辑器

<template> <div> <textarea style="display:none" id="editor_content" name="contentHtml"></textarea> <script id="editor" type="text/plain"></script> </div></templ

domino集成kindeditor富文本编辑器

vue集成百度UEditor富文本编辑器

在前端开发的项目中.难免会遇到需要在页面上集成一个富文本编辑器.那么.如果你有这个需求.希望可以帮助到你 vue是前端开发者所追捧的框架,简单易上手,但是基于vue的富文本编辑器大多数太过于精简.于是我将百度富文本编辑器放到vue项目中使用.效果图如下 废话不多说. 1.使用vue-cli构建一个vue项目.然后下载UEditor源码.地址:http://ueditor.baidu.com/website/ 把项目复制到vue项目的static文件下.目的是让服务可以访问到里面的文件,打开UEd

搭建自己的博客(十三):为博客后台添加ckeditor富文本编辑器

使用django默认的编辑器感觉功能太少了,所以集成一下富文本编辑器. 1.安装和使用 (1).安装 pip install django-ckeditor (2).注册应用 在django的settings中添加‘ckeditor’的app (3).配置models 将需要用到富文本编辑器的字段改成RichTextField 上面三步配置过后是不能上传图片的,下面配置上传图片的功能. (4).安装pillow库 pip install pillow (5).注册应用 添加'ckeditor_u