在配置百度富文本时不是那么顺利,参考百度了大家的分享后给自己的配置做个总结。
环境:
python 3.7
Django 2.2.2
DjangoUeditor 1.8.143采用 pip install DjangoUeditor 安装后出现错误:
ModuleNotFoundError: No module named 'widgets'
原因是安装包只支持 python2 ,
解决方法:下载https://github.com/twz915/DjangoUeditor3
在虚拟环境的 Lib\site-packages 覆盖掉DjangoUeditor目录-
配置 setting
应用里增加DjangoUeditor:INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'editor', 'DjangoUeditor', ]
配置上传文件路径:
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media')
-
配置urls :
url(r'^ueditor/',include('DjangoUeditor.urls' ))
-
配置模型类:
from DjangoUeditor.models import UEditorField content = UEditorField(u'内容 ', width=600, height=300, toolbars="full", imagePath="app/", filePath="app/", upload_settings={"imageMaxSize": 1204000}, settings={}, command=None, blank=True)
其中imagePath="app/", filePath="app/"为上传文件的目录,注意有'/'结尾,最终上传路径为static/media/app/
-
在通过admin 增加信息时报错:
render() got an unexpected keyword argument 'renderer'
解决办法:注释掉虚拟环境下 lib/python3.7/site-packages/django/forms/boundfield.py 的第93行:renderer=self.form.renderer
return widget.render(
name=self.html_initial_name if only_initial else self.html_name,
value=self.value(),
attrs=attrs,
# renderer=self.form.renderer,
)
-
上传图片时无法显示:
原因是:DjangoUeditor.views的第241行:
return_info = {
# 保存后的文件名称
'url': urljoin(USettings.gSettings.MEDIA_URL, OutputPathFormat),
'original': upload_file_name, # 原始文件名
'type': upload_original_ext,
'state': state, # 上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
'size': upload_file_size
}
当在语句后添加 print(return_info)后发现,该url地址为app/,与实际地址不符,应对此地址进行拼接,如
return_info = {
# 保存后的文件名称
'url': '/static/media' + urljoin(USettings.gSettings.MEDIA_URL, OutputPathFormat),
'original': upload_file_name, # 原始文件名
'type': upload_original_ext,
'state': state, # 上传状态,成功时返回SUCCESS,其他任何值将原样返回至图片上传框中
'size': upload_file_size
}
当在windows 系统操作时,文件上传到了磁盘根目录,而不是应用下的目录