文章内容使用django-ckeditor

1)安装django-ckeditor

pip install django-ckeditor
pip install Pillow

2)在settings.py的INSTALLED_APPS里添加ckeditor和ckeditor_uploader两个应用

INSTALLED_APPS = (
...
'ckeditor',
'ckeditor_uploader'
)

3)同时需要在settings.py里设置ckeditor的文件上传路径等配置:

...
STATIC_URL = '/static/'
STATIC_ROOT = ''
# media_confige
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
CKEDITOR_UPLOAD_PATH = 'article_files/'
CKEDITOR_JQUERY_URL = 'js/jquery-3.2.1.min.js'
CKEDITOR_IMAGE_BACKEND = 'pillow'
CKEDITOR_CONFIGS = {
'default': {
'language': 'zh-cn',
'toolbar_YourCustomToolbarConfig': [
{'name': 'clipboard', 'items': ['Undo', 'Redo', '-', 'Cut', 'Copy', 'Paste', 'PasteText', 'PasteFromWord']},
{'name': 'paragraph',
'items': ['NumberedList', 'BulletedList', '-', 'Outdent', 'Indent', '-', 'Blockquote']},
{'name': 'insert', 'items': ['Image', 'Table', 'HorizontalRule', 'Smiley']},
{'name': 'links', 'items': ['Link', 'Unlink', 'Anchor']},
{'name': 'editing', 'items': ['Find', 'Replace', '-']},
{'name': 'tools', 'items': ['Maximize']},
'/',
{'name': 'styles', 'items': ['Format', 'Font', 'FontSize']},
{'name': 'basicstyles',
'items': ['Bold', 'Italic', 'Underline', 'Strike', '-', 'RemoveFormat']},
{'name': 'colors', 'items': ['TextColor', 'BGColor']},
{'name': 'paragraph',
'items': ['JustifyLeft', 'JustifyCenter', 'JustifyRight', 'JustifyBlock']},
{'name': 'document', 'items': ['Source']},
],
'toolbar': 'YourCustomToolbarConfig', # put selected toolbar config here
'width': '100%',
'cols': '',
'rows': '',
'tabSpaces': 4,
'extraPlugins': ','.join([
'uploadimage', # the upload image feature
# your extra plugins here
'div',
'autolink',
'autoembed',
'embedsemantic',
'autogrow',
'widget',
'lineutils',
'clipboard',
'dialog',
'dialogui',
'elementspath'
]),
}
}
CKEDITOR_ALLOW_NONIMAGE_FILES = False
CKEDITOR_BROWSE_SHOW_DIRS = True

4)修改urls.py

url(r'^ckeditor/', include('ckeditor_uploader.urls')),

5)最后修改需要使用富文本编辑器的Django APP的目录下的models.py

# coding:utf-8
...#from ckeditor.fields import RichTextField
from ckeditor_uploader.fields import RichTextUploadingField
from django.utils.encoding import python_2_unicode_compatible
# """
# 文章实体
# """
@python_2_unicode_compatible
class Post(models.Model):
...
body = RichTextUploadingField(verbose_name=u'内容') # 文章内容,较长因此定义为TextField, type=models.TextField
...

备注:

ckeditor的CKEDITOR_CONFIGS就是一个Python的dict,可以同时运用多种ckeditor的配置并命名。

CKEDITOR_CONFIGS = {
'awesome_ckeditor': {
'toolbar': 'Basic',
},
'default_ckeditor':{
'toolbar': 'Full',
},
}

这样在models.py中就可以通过RichTextField的config_name进行选择。

learn = RichTextField(config_name='default_ckeditor')
instructions = RichTextField(config_name='awesome_ckeditor')

文章简介使用django-tinymce

1)安装django-tinymce插件:

pip install django-tinymce

2)在settings.py的INSTALLED_APPS里添加tinymce应用

INSTALLED_APPS = [
...
'tinymce',
]

3)修改urls.py

url(r'^tinymce/', include('tinymce.urls')),

4)修改models.py

# coding:utf-8
...
from tinymce.models import HTMLField
...
from django.utils.encoding import python_2_unicode_compatible # """
# 文章实体
# """
@python_2_unicode_compatible
class Post(models.Model):
...
summary = HTMLField(verbose_name=u'简介', max_length=256, blank=True) # 文章简介,定义最大长度为126。, type=models.CharField
...

最终效果:

Django(博客系统):文章内容使用django-ckeditor、文章简介使用django-tinymce的更多相关文章

  1. web开发-Django博客系统

    项目界面图片预览 项目代码github地址 项目完整流程 项目流程: 1 搞清楚需求(产品经理) (1) 基于用户认证组件和Ajax实现登录验证(图片验证码) (2) 基于forms组件和Ajax实现 ...

  2. Django(博客系统):按照时间分层筛选“/blog/article/?create_time__year=2017”,出现问题:Database returned an invalid datetime value. Are time zone definitions for your database installed?

    问题背景 添加文章时间没问题,但为了设定博客文章按照时间分层筛选(创建时间的年份.年月&月份来搜索文章),我在blog这个django app的admin.py的ArticleAdmin类中做 ...

  3. Django(博客系统):重写了auth.User后使用createsupperuser出错解决办法

    背景:重写django的系统User后,使用createsupperuser创建用户失败 由于项目需要扩展django默认新的auth.User系统(添加两个字段:头像.简介等字段),因此就重写了dj ...

  4. Django博客系统

    零.创建项目及配置 一.编写 Model 层的代码 二.配置 admin 页面 三.根据需求定制 admin

  5. Django 博客开发教程目录索引

    Django 博客开发教程目录索引 本项目适合 0 基础的 Django 开发新人. 项目演示地址:Black & White,代码 GitHub 仓库地址:zmrenwu/django-bl ...

  6. Asp.net博客系统收集和简单介绍

    国内Asp.net博客系统收集和简单介绍       [转载文章,仅供个人参考,引自http://www.soyaoo.com/Blog/post/92.html] 1.ZJ-Blog程序简介:基于A ...

  7. 【django之博客系统开发】

    一.项目简介 使用django开发一套博客系统,参考博客园. 需求如下: 项目结构: 二.全部代码 from django.db import models # Create your models ...

  8. django初探-创建简单的博客系统

    django第一步 1. django安装 pip install django print(django.get_version()) 查看django版本 2. 创建项目 打开cmd,进入指定目录 ...

  9. django初探-创建简单的博客系统(二)

    上篇django初探-创建简单的博客系统(一)已经记录了Django实现博客的发布的整个过程,接下来继续说明博客标题和内容的显示. 显示博客详细 将博客内容保存到数据库还不是发布博客的终极目的,博客一 ...

随机推荐

  1. 【Python】 字符串的相关小知识点

    字符串 很久以前,刚接触IT知识的时候,我觉得字符串还有字符变量是很奇葩的存在.数字,数组,字典什么的这些数据类型要不就是自然界固有的要不就是为了计算方便而发明出来的一些数据的组合方式.但是字符串这玩 ...

  2. Konckout第六个实例:自定义组件 -- 发表评论

    <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...

  3. 推荐一个利用 python 生成 pptx 分析报告的工具包:reportgen

    reportgen v0.1.8 更新介绍 这段时间,我对 reportgen 进行了大工程量的修改和更新.将之前在各个文章中出现的函数进行了封装,同时也对现有工具包的一些逻辑进行了调整. 1.rep ...

  4. 转载:lua中switch

    刚开始使用lua的人肯定会不满lua居然没有switch这个语法. 但是熟悉lua的强大特性之后,你会发现其实switch是完全没有必要提供的^.^,因为lua有强大的table和function 例 ...

  5. string和c_str()使用时的坑

    先看一段代码和它的运行结果: 看到结果了么这个运行的结果和我们理解的是不会有差距.对于经验丰富的开发者可能会微微一笑,但是对于一个刚刚学习的人就开始疑惑了.这里主要说两个问题: 1.声明了一个stri ...

  6. JavaScript(第十天)【Function类型】

    在ECMAScript中,Function(函数)类型实际上是对象.每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象 ...

  7. [福大软工教学] W班 第1次成绩排行榜

    作业地址 https://edu.cnblogs.com/campus/fzu/FZUSoftwareEngineering1715W/homework/837 作业要求 (1)回想一下你初入大学时对 ...

  8. Bate测试报告

    1 测试中找出的bug Bug类型 总数 描述 修复的bug 10 1.注册成功并没有直接跳转到登录页面: 2.学校地区无限制,数字也可以: 3.虽然相同用户名不能注册,但是只是显示,注册失败,却没有 ...

  9. VS2005 与虚拟机的那点事

      好不容易把VS2008装上了,每次F5编译的时候,程序自动退出,意外的是VS2005也是同样的结果.好在有像我一样的好心人,愿意把解决的方法与大家共享.     经过搜索找到了答案,原来是VMwa ...

  10. python第三方库requests详解

    Requests 是用Python语言编写,基于 urllib,采用 Apache2 Licensed 开源协议的 HTTP 库.它比 urllib 更加方便,可以节约我们大量的工作,完全满足 HTT ...