djangoueditor 跟xadmin自带的插件如m2m多对多选择样式的js有冲突解决办法
老眼 2018-01-23 11:37:48
分 享


问题原因


xadmin中新建的ueditor.py插件


...

class XadminUEditorWidget(UEditorWidget):

    def __init__(self,**kwargs):

        self.ueditor_options=kwargs

        self.Media.js = None

        super(XadminUEditorWidget,self).__init__(kwargs)

....


其中self.Media.js = None这一句把其它的插件渲染的js和css都置空,导致ueditor正常其它插件有问题。

但是去掉这句的话ueditor又不正常。


解决方法


这里以ueditor与m2m多对多选择插件有冲突的解决方法,把m2m需要的js和css文件加入即可(至于怎么

知道这些js和css的,还原问题现象比对正常和异常的js不同即可)。


# -*- coding: utf-8 -*-
import xadmin
from xadmin.views import BaseAdminPlugin, CreateAdminView,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)}
            if isinstance(db_field, TextField):
                return {'widget': XadminUEditorWidget}
        return attrs
    # Media,添加到footer中的js文件
    def get_media(self, media):
        media = media + self.vendor('xadmin.widget.select.js','xadmin.widget.select-transfer.js','xadmin.plugin.quick-form.js')
        return media
    #添加到header中的css和js文件
    def block_extrahead(self, context, nodes):
        js ='<link href="/static/xadmin/vendor/select2/select2.css" type="text/css" media="screen" rel="stylesheet" />'
        js +='<link href="/static/xadmin/vendor/selectize/selectize.css" type="text/css" media="screen" rel="stylesheet" />'
        js +='<link href="/static/xadmin/vendor/selectize/selectize.bootstrap3.css" type="text/css" media="screen" rel="stylesheet" />'
        js +='<link href="/static/xadmin/css/xadmin.widget.select-transfer.css" type="text/css" media="screen" rel="stylesheet" />'
        js +='<script type="text/javascript" src="/static/xadmin/vendor/selectize/selectize.js"></script>'
        js +='<script type="text/javascript" src="/static/xadmin/vendor/select2/select2.js"></script>'
        js +='<script type="text/javascript" src="/static/xadmin/vendor/select2/select2_locale_zh-hans.js"></script>'
        #js +='<script type="text/javascript" src="/static/xadmin/js/xadmin.widget.select.js"></script>'
        #js +='<script type="text/javascript" src="/static/xadmin/js/xadmin.widget.select-transfer.js"></script>'
        #js +='<script type="text/javascript" src="/static/xadmin/js/xadmin.plugin.quick-form.js"></script>'
        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)


本文属原创文章,转载请注明来自(www.lybbn.cn-老眼帮帮你)

吐槽一下

游客

所有吐槽
  • 暂时还没有吐槽,赶紧来吐槽!