Xadmin集成DjangoUeditor遇到的问题

环境:python3.6 、django2.0

集成过程

  1. 项目的extra_apps中加入xadmin和DjangoUeditor文件夹
  2. 将xadmin和DjangoUeditor注册到app
    Xadmin集成DjangoUeditor遇到的问题_第1张图片
  3. 在xadmin文件夹下的plugins文件夹下新建ueditor.py文件,写入如下内容
import xadmin
from django.db.models import TextField
from xadmin.views import BaseAdminPlugin, ModelFormAdminView, DetailAdminView
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

   def block_extrahead(self, context, nodes):
       js = '' % (settings.STATIC_URL + "/ueditor/ueditor.config.js")         #自己的静态目录
       js += '' % (settings.STATIC_URL + "/ueditor/ueditor.all.min.js")       #自己的静态目录
       nodes.append(js)

xadmin.site.register_plugin(UeditorPlugin, DetailAdminView)
xadmin.site.register_plugin(UeditorPlugin, ModelFormAdminView)
  1. 在当前目录plugins文件下找到__init__.py文件,将ueditor注册

Xadmin集成DjangoUeditor遇到的问题_第2张图片

  • xadmin字段配置
    Xadmin集成DjangoUeditor遇到的问题_第3张图片
  • models字段的使用
from DjangoUeditor.models import UEditorField

#我也不知道这是啥意思,暂时只找到这个解决办法
goods_desc = UEditorField(verbose_name=u"内容", imagePath="goods/images/%(basename)s_%(datetime)s.%(extname)s", width=1000, height=300,
                             filePath="goods/files/%(basename)s_%(datetime)s.%(extname)s", default='',toolbars='besttome')
  • 文件存储的配置
MEDIA_URL = "/media/"
STATICFILES_DIRS = (
   os.path.join(BASE_DIR, "static"),
)

MEDIA_ROOT = os.path.join(BASE_DIR, "media")
  • 路由配置
urlpatterns = [
   path('xadmin/', xadmin.site.urls),
   path('ueditor/',include('DjangoUeditor.urls'))
]
if settings.DEBUG:
   from django.conf.urls.static import static

   urlpatterns += static(
       settings.MEDIA_URL, document_root=settings.MEDIA_ROOT
   )

成功页面
Xadmin集成DjangoUeditor遇到的问题_第4张图片

你可能感兴趣的:(Python,Django)