xadmin集成DjangoUeditor富文本编辑器

在对后台进行编辑时,采用百度开源的富文本编辑器ueditor,本文采用djangoueditor。由于原作者不再对其进行维护Python3的版本安装 点此进入https://github.com/twz915/DjangoUeditor3
建议将源码包下载下来,并直接放在项目下的extra_apps中,如下所示:
这里写图片描述


本文的开发环境如下:

  • python352
  • django1.10
  • ubuntu16.04

配置步骤

  • 1、将djangoueditor添加到setting.py中

INSTALLED_APPS = [

‘DjangoUeditor’,
]

  • 2、添加一级路由配置urls.py

在项目的主urls.py文件中:

#富文本编辑器
url(r'^ueditor/',include('DjangoUeditor.urls' )),
  • 3、models.py使用UEditorField字段
class Goods(models.Model):
    """
    商品
    UEditorField:
    """
    goods_desc = UEditorField(verbose_name='内容',imagePath='goods/images/',width=1000,height=300,
        filePath='goods/files/',default='')
    )

关于UEditorField字段中的具体参数详情,可以参考文档https://github.com/twz915/DjangoUeditor3

  • 4、xadmin中添加插件ueditor

由于已经将xadmin源文件拷贝到了项目下,本文为extra_apps/xadmin,即在extra_apps/xadmin/plugin/中新建一个ueditor.py文件,里面写入如下(这些代码github上都有,这里只不过写下了让文章更具有逻辑):

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)
  • 5、在extral_apps/xadmin/plugin下的init.py中添加上ueditor
PLUGINS = (
    ...
    'ueditor',
)
  • 6、在adminx.py中注册的表单中声明你的UEditorField字段的属性名字,我这里的是goods_desc(商品描述)

class CourseAdmin(object):
    ...
    style_fields = {"goods_desc": "ueditor"} # 一定要声明,在models.py中的属性名字,
                                              #不然xadmin不会生效
  • 7 xadmin后台效果如下:
    这里写图片描述
  • 8、在前端显示的话,需要对html页面修改如下
{% autoescape off %}
{{ course.detail }}
{% endautoescape %}
Ueditor HTML编辑器是百度开源的HTML编辑器, 本模块帮助在Django应用中集成百度Ueditor HTML编辑器。 安装包中已经集成Ueditor v1.2.2 使用Django-Ueditor非常简单,方法如下: 1、安装方法 **方法一:下载安装包,在命令行运行: python setup.py install **方法二:使用pip工具在命令行运行(推荐): pip install DjangoUeditor 2、在INSTALL_APPS里面增加DjangoUeditor app,如下: INSTALLED_APPS = ( #........ &#39;DjangoUeditor&#39;, ) 3、在urls.py中增加: url(r&#39;^ueditor/&#39;,include(&#39;DjangoUeditor.urls&#39; )), 4、在models中这样定义: from DjangoUeditor.models import UEditorField class Blog(models.Model): Name=models.CharField(,max_length=100,blank=True) Content=UEditorField(&#39;内容 &#39;,height=100,width=500,default=&#39;test&#39;,imagePath="uploadimg/",imageManagerPath="imglib",toolbars=&#39;mini&#39;,options={"elementPathEnabled":True},filePath=&#39;upload&#39;,blank=True) 说明: UEditorField继承自models.TextField,因此你可以直接将model里面定义的models.TextField直接改成UEditorField即可。 UEditorField提供了额外的参数: toolbars:配置你想显示的工具栏,取值为mini,normal,full,代表小,一般,全部。如果默认的工具栏不符合您的要求,您可以在settings里面配置自己的显示按钮。参见后面介绍。 imagePath:图片上传的路径,如"images/",实现上传到"{{MEDIA_ROOT}}/images"文件夹 filePath:附件上传的路径,如"files/",实现上传到"{{MEDIA_ROOT}}/files"文件夹 imageManagerPath:图片管理器显示的路径,如"imglib/",实现上传到"{{MEDIA_ROOT}}/imglib",如果不指定则默认=imagepath。 options:其他UEditor参数,字典类型。参见Ueditor的文档ueditor_config.js里面的说明。 css:编辑器textarea的CSS样式 width,height:编辑器的宽度和高度,以像素为单位。 5、在表单中使用非常简单,与常规的form字段没什么差别,如下: class TestUeditorModelForm(forms.ModelForm): class Meta: model=Blog *********************************** 如果不是用ModelForm,可以有两种方法使用: 1: 使用forms.UEditorField from DjangoUeditor.forms import UEditorField class TestUEditorForm(forms.Form): Description=UEditorField("描述",initial="abc",width=600,height=800) 2: widgets.UEditorWidget from DjangoUeditor.widgets import UEditorWidget class TestUEditorForm(forms.Form): Content=forms.CharField(label="内容",widget=UEditorWidget(width=800,height=500, imagePath=&#39;aa&#39;, filePath=&#39;bb&#39;,toolbars={})) widgets.UEditorWidget和forms.UEditorField的输入参数与上述models.UEditorField一样。 6、Settings配置 在Django的Settings可以配置以下参数: UEDITOR_SETTINGS={ "toolbars":{ #定义多个工具栏显示的按钮,允行定义多个 "name1":[[ &#39;source&#39;, &#39;|&#39;,&#39;bold&#39;, &#39;italic&#39;, &#39;underline&#39;]], "name2",[] }, "images_upload":{ "allow_type":"jpg,png", #定义允许的上传的图片类型 "max_size":"2222kb" #定义允许上传的图片大小,0代表不限制 }, "files_upload":{ "allow_type":"zip,rar", #定义允许的上传的文件类型 "max_size":"2222kb" #定义允许上传的文件大小,0代表不限制 },, "image_manager":{ "location":"" #图片管理器的位置,如果没有指定,默认跟图片路径上传一样 }, } 7、其他事项: **本程序基于百度ueditor 1.2.2,安装包里面已经包括了,不需要再额外安装。 **目前暂时不支持ueditor的插件 **Django默认开启了CSRF中间件,因此如果你的表单没有加入{% csrf_token %},那么当您上传文件和图片时会失败
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值