使用富文本编辑器
参考链接:https://cloud.tencent.com/developer/article/1853667
安装django-ckeditor
pip install django-ckeditor
settings.py添加应用,
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'slide',
'team',
'news',
'ckeditor',
'ckeditor_uploader', # 上传图片时使用
]
配置上传路径
# media 配置
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
# 富文本ckeditor配置
CKEDITOR_UPLOAD_PATH = 'upload/'
CKEDITOR_IMAGE_BACKEND = 'pillow'
模型中使用
from distutils.command.upload import upload
from django.db import models
from ckeditor.fields import RichTextField
from ckeditor_uploader.fields import RichTextUploadingField #可以上传本地图片
# Create your models here.
class Category(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField('分类名称',max_length=100)
class Meta:
verbose_name = '分类管理'
verbose_name_plural = '分类管理'
def __str__(self):
return self.name
class News(models.Model):
id = models.AutoField(primary_key=True)
title = models.CharField('标题',max_length=100)
content = RichTextUploadingField()
cover = models.ImageField('封面',upload_to='news',blank=True, null=True,help_text='最佳尺寸:480*270px')
created_at = models.DateTimeField('创建时间', auto_now_add=True, editable=True)
updated_at = models.DateTimeField('更新时间', auto_now=True, editable=True)
category = models.ForeignKey(Category, on_delete = models.CASCADE)
class Meta:
verbose_name = '新闻管理'
verbose_name_plural = '新闻管理'
def __str__(self):
return self.title
配置路由
全局配置的url.py 文件中,设置ckeditor路由。
urlpatterns = [
path('', include('website.urls')),
path('news/', include('news.urls')),
path('ckeditor', include('ckeditor_uploader.urls')),
path('admin/', admin.site.urls),
]
from django.conf import settings
from django.conf.urls.static import static
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
下面的urlpatterns是为了显示上传的路径。仅在测试时使用,上线后,通过nginx配置。