一、安装DjangoUeditor
我们直接用命令行安装的DjangoUeditor是django2.0版本的,不适合我们,所以只能用zip安装
下载地址:https://github.com/twz915/DjangoUeditor3
下载之后,我们将其解压,复制DjangoUeditor文件夹到项目的根目录下,他也是我们项目的一个应用模块。
创建models.py文件,后台使用富文本编辑器,所以我们要进行配置。
二、富文本编辑器的配置
2.1 到项目的settings.py中注册DjangoUeditor应用
INSTALLED_APPS = [
'django.contrib.admin',
....
....
# 注册富文本编辑器
'DjangoUeditor',
]
2.2 到项目的总路由urls.py 中添加DjangoUeditor的路由
urlpatterns = [
path('admin/', xadmin.site.urls),
....
...
path('ueditor/', include('DjangoUeditor.urls')),
]
2.3 在models.py中进行模型的操作,建立一个表,其中“description”字段用到富文本编辑器
from DjangoUeditor.models import UEditorField
from django.db import models
# Create your models here.
from django.utils import timezone
class Mynew(models.Model):
"""添加新闻模块"""
NEWS_TYPE = (
('企业新闻', '企业新闻'),
('行业新闻', '行业新闻'),
('通知新闻', '通知新闻'),
)
title = models.CharField(max_length=50, verbose_name='新闻标题')
description = UEditorField(u'内容', default='', width=950, height=280, imagePath='news/images/',
filePath='news/files/')
newType = models.CharField(choices=NEWS_TYPE, max_length=50, verbose_name='新闻类型')
publish_date = models.DateTimeField(max_length=20, default=timezone.now, verbose_name='发布时间')
views = models.PositiveIntegerField(default=0, verbose_name='浏览量')
def __str__(self):
return self.title
class Meta:
ordering = ['-publish_date']
verbose_name = '新闻'
verbose_name_plural = '新闻'
2.4 对模型进行后台的注册,我是用的是xadmin后台管理,好看又大方,如果你也想使用,可以去看我的另一篇文章,里面讲的很详细。
import xadmin
from newsApp.models import Mynew
class MynewAdmin(object):
"""注册newsApp后台"""
style_fields = {'description': 'ueditor'} # 富文本编辑器的注册
xadmin.site.register(Mynew, MynewAdmin)
2.5 运行
python manage.py makemigrations
和
python manage.py migrate
这里可能会出错,但是不用怕,接下去我们就讲讲解决方案。
三、出错的解决方法
用富文本编辑DjangoUEditor,DjangoUEditor中关于six的引用会报错,摸索了一下发现:
1、Django3.0.3移除了six。
2. six可以单独安装:pip install six。另外,urllib 好像也独立出来了,引用时不需有前缀。
3. 安装完six之后,将DjangoUEditor中有关的引用路径修改一下。包括如下三个文件的修改。
(1)DjangoUEditor目录下的views.py文件中有如下行
from django.utils.six.moves.urllib.request import urlopen
from django.utils.six.moves.urllib.parse import urljoin
改为:
from six.moves.urllib.request import urlopen
from six.moves.urllib.parse import urljoin
(2)widgets.py文件中有如下一行:
from django.utils.six import string_types
修改为:
from six import string_types
(3)urllib似乎已从six之中独立出来,故commands.py文件中的如下一行:
from django.utils.six.moves.urllib.parse import urljoin
改为:
from urllib.parse import urljoin
以上三个文件中对six的引用路径个改后,Django3项目进入后台,富文本编辑能正常使用。
四、效果如下,很精美的后台和方便编辑