Django使用xadmin结合富文本编辑器uedtior

django 有一个封装好的admin后台管理系统,如果不能满足需求,可以使用第三方插件xadmin,xadmin的安装和使用可以参考git https://github.com/sshwsfc/xadmin

对后台进行编辑的时候,有时需要上传图片之类更丰富的文本操作,这样就需要富文本编辑器,本文介绍使用百度开源的富文本编辑器ueditor,由于该编辑器较早产生,目前不支持python3,只支持python2,因此需要将源码包下载下来,并直接放在项目下的extra_apps 下,如下图

以下案例在pycharm的IDE下进行xadmin和ueditor的设置,

步骤:

1.将djangoueditor添加到项目的setting.py文件中

#在项目的setting下进行以下设置
INSTALLED_APPS = [
    ...
    'DjangoUeditor',
]

2.添加到项目的url.py的urlpattern下

#在url下添加富文本编辑器文档
urlpatterns = [
    ……
    url(r'^ueditor/',include('DjangoUeditor.urls')),
]

3.修改需要使用富文本编辑器的module

在model中将需要修改富文本编辑器的字段(一般为详情之类的字段)类型多为TextField

#以下为案例举例
from DjangoUeditor.models import UEditorField

class Goods(models.Model):
    ……
   good_desc=UEditorField(u'内容',width=1000,height=300,imagePath='goods/images/',filePath='goods/files/',default='')

4. 在xadmin的目录下添加插件ueditor

因为本文中的案例在extra_apps下添加了xadmin插件,所以是在xadmin的目录下plugin的文件夹里新建一个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)

5.把ueditor添加到plugin的__init__.py文件中

PLUGINS = (
    ...
    'ueditor',
)

6.将ueditor添加到adminx.py中(是需要使用富文本编辑器的应用目录下的adminx.py文件中)

class Goodsxadmin(object):
        ……
     # 添加这个字段才能显示富文本的图片,否则只显示连接
    style_fields={'good_desc':'ueditor'}

7.前端页面为了防止富文本编辑器出现转义,需要设置

{% autoescape off %}
{{ goods.good_desc }}
{% endautoescape %}
或者
{{ goods.good_desc|safe}}

以上就是对富文本编辑器的设置,运行程序,进入xadmin后台,就可以看到富文本编辑器的内容了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值