首先下载 DjangoUeditor :https://github.com/twz915/DjangoUeditor3
这是去官网下载并进行安装,但是不兼容python3
pip install DjangoUeditor
这里选择下载源码安装,考虑兼容性问题,进入压缩目录,执行以下安装语句
python setup.py DjangoUeditor
INSTALLED_APPS = [
'django.contrib.admin',
...
# 富文本
'DjangoUeditor',
]
url(r'^ueditor/',include('DjangoUeditor.urls' )),
from DjangoUeditor.models import UEditorField
class UserAdvice(models.Model):
advices = UEditorField(verbose_name='用户建议', width=600, height=300,
toolbars="full",imagePath="advices/ueditor/%(datetime)s.%(extname)s",
filePath="advices/ueditor/%(datetime)s.%(extname)s", default='')
其中参数如下:
width,height :编辑器的宽度和高度,以像素为单位。
imagePath :图片上传后保存的路径
filePath : 附件上传后保存的路径,设置规则与imagePath一样
更详细的的参数介绍见:https://github.com/twz915/DjangoUeditor3
迁移数据库
makemigrations
migrate
# 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 = '' % (settings.STATIC_URL + "ueditor/ueditor.config.js") #自己的静态目录
js += '' % (settings.STATIC_URL + "ueditor/ueditor.all.min.js") #自己的静态目录
nodes.append(js)
xadmin.site.register_plugin(UeditorPlugin, UpdateAdminView)
xadmin.site.register_plugin(UeditorPlugin, CreateAdminView)
__init__.py
文件下将ueditor插件添加进入,否则xadmin不认识这个插件PLUGINS = (
'actions',
'filters',
.....
'importexport',
'ueditor'
)
class UserAdviceAdmin(object):
...
style_fields = {"advices":"ueditor"}
# setting.py
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# urls.py
from django.conf.urls import url, include
from rentingHouse.settings import MEDIA_ROOT
from django.views import static
urlpatterns = [
url('^static/(?P.*)$' , static.serve, {'document_root': STATIC_ROOT}, name='static'),
url(r'^media/(?P.*)$' ,static.serve,{"document_root":MEDIA_ROOT},name='media'),
# 富文本
url(r'^ueditor/', include('DjangoUeditor.urls')),
]
配置好后看一下结果
前台配置:autoescape off 来清除样式
{% autoescape off %}
{{ advices }}
{% endautoescape %}
本节完