使用富文本编辑器

参考链接:https://cloud.tencent.com/developer/article/1853667

安装django-ckeditor

pip install django-ckeditor

settings.py添加应用,

  1. INSTALLED_APPS = [
  2. 'django.contrib.admin',
  3. 'django.contrib.auth',
  4. 'django.contrib.contenttypes',
  5. 'django.contrib.sessions',
  6. 'django.contrib.messages',
  7. 'django.contrib.staticfiles',
  8. 'slide',
  9. 'team',
  10. 'news',
  11. 'ckeditor',
  12. 'ckeditor_uploader', # 上传图片时使用
  13. ]

配置上传路径

  1. # media 配置
  2. MEDIA_URL = '/media/'
  3. MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
  4. # 富文本ckeditor配置
  5. CKEDITOR_UPLOAD_PATH = 'upload/'
  6. CKEDITOR_IMAGE_BACKEND = 'pillow'

模型中使用

  1. from distutils.command.upload import upload
  2. from django.db import models
  3. from ckeditor.fields import RichTextField
  4. from ckeditor_uploader.fields import RichTextUploadingField #可以上传本地图片
  5. # Create your models here.
  6. class Category(models.Model):
  7. id = models.AutoField(primary_key=True)
  8. name = models.CharField('分类名称',max_length=100)
  9. class Meta:
  10. verbose_name = '分类管理'
  11. verbose_name_plural = '分类管理'
  12. def __str__(self):
  13. return self.name
  14. class News(models.Model):
  15. id = models.AutoField(primary_key=True)
  16. title = models.CharField('标题',max_length=100)
  17. content = RichTextUploadingField()
  18. cover = models.ImageField('封面',upload_to='news',blank=True, null=True,help_text='最佳尺寸:480*270px')
  19. created_at = models.DateTimeField('创建时间', auto_now_add=True, editable=True)
  20. updated_at = models.DateTimeField('更新时间', auto_now=True, editable=True)
  21. category = models.ForeignKey(Category, on_delete = models.CASCADE)
  22. class Meta:
  23. verbose_name = '新闻管理'
  24. verbose_name_plural = '新闻管理'
  25. def __str__(self):
  26. return self.title

配置路由

全局配置的url.py 文件中,设置ckeditor路由。

  1. urlpatterns = [
  2. path('', include('website.urls')),
  3. path('news/', include('news.urls')),
  4. path('ckeditor', include('ckeditor_uploader.urls')),
  5. path('admin/', admin.site.urls),
  6. ]
  7. from django.conf import settings
  8. from django.conf.urls.static import static
  9. urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

下面的urlpatterns是为了显示上传的路径。仅在测试时使用,上线后,通过nginx配置。