Django(博客系统):文章内容使用django-ckeditor、文章简介使用django-tinymce
文章内容使用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的更多相关文章
- web开发-Django博客系统
项目界面图片预览 项目代码github地址 项目完整流程 项目流程: 1 搞清楚需求(产品经理) (1) 基于用户认证组件和Ajax实现登录验证(图片验证码) (2) 基于forms组件和Ajax实现 ...
- 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类中做 ...
- Django(博客系统):重写了auth.User后使用createsupperuser出错解决办法
背景:重写django的系统User后,使用createsupperuser创建用户失败 由于项目需要扩展django默认新的auth.User系统(添加两个字段:头像.简介等字段),因此就重写了dj ...
- Django博客系统
零.创建项目及配置 一.编写 Model 层的代码 二.配置 admin 页面 三.根据需求定制 admin
- Django 博客开发教程目录索引
Django 博客开发教程目录索引 本项目适合 0 基础的 Django 开发新人. 项目演示地址:Black & White,代码 GitHub 仓库地址:zmrenwu/django-bl ...
- Asp.net博客系统收集和简单介绍
国内Asp.net博客系统收集和简单介绍 [转载文章,仅供个人参考,引自http://www.soyaoo.com/Blog/post/92.html] 1.ZJ-Blog程序简介:基于A ...
- 【django之博客系统开发】
一.项目简介 使用django开发一套博客系统,参考博客园. 需求如下: 项目结构: 二.全部代码 from django.db import models # Create your models ...
- django初探-创建简单的博客系统
django第一步 1. django安装 pip install django print(django.get_version()) 查看django版本 2. 创建项目 打开cmd,进入指定目录 ...
- django初探-创建简单的博客系统(二)
上篇django初探-创建简单的博客系统(一)已经记录了Django实现博客的发布的整个过程,接下来继续说明博客标题和内容的显示. 显示博客详细 将博客内容保存到数据库还不是发布博客的终极目的,博客一 ...
随机推荐
- Java基础知识回顾之二 ----- 修饰符和String
前言 在上一篇中,回顾了Java的基本数据类型 ,这篇就来回顾下Java中的一些修饰符以及String. 修饰符介绍 Java修饰符主要分为两类: 访问修饰符 非访问修饰符 其中访问修饰符主要包括 p ...
- 用JNDI连接数据库
之前说到了利用Java中的Properties类读取properties配置文件,连接数据库,现在说另一种方法,他们的目的和作用都是一样的,都是为了提高代码的复用性,解决了更改数据库 时还要更改代码的 ...
- Maven-11: 从命令行调用插件
mvn -h显示mvn命令帮助: usage: mvn [options] [<goal(s)>] [<phase(s)>] Options: -am,--also-make ...
- 变量对象VO与活动对象AO
变量对象VO 变量对象VO是与执行上下文相关的特殊对象,用来存储上下文的函数声明,函数形参和变量.在global全局上下文中,变量对象也是全局对象自身,在函数上下文中,变量对象被表示为活动对象AO. ...
- 【Python】 闭包&装饰器
python中的函数本身就是对象,所以可以作为参数拿来传递.同时其允许函数的层级嵌套定义,使得灵活性大大增加. 闭包 闭包的定义:将函数的语句块与其运行所需要的环境打包到一起,得到的就是闭包对象.比如 ...
- nginx域名跳转技巧
1.地址重写:访问server_name的时候跳转到http://www.cnblogs.com/qinyujie/ 修改nginx配置文件.加入到server{...}字段或者location字段里 ...
- Konckout第五个实例:各种事件绑定
点击加一: <!doctype html> <html > <head> <meta http-equiv="Content-Type" ...
- CSS 语法
CSS 语法 CSS 规则由两个主要的部分构成:选择器,以及一条或多条声明: 选择器通常是您需要改变样式的 HTML 元素. 每条声明由一个属性和一个值组成. 属性(property)是您希望设置的样 ...
- Java虚拟机之GC
⑴背景 Java堆和方法区实现类所需内存是不一样的,每个方法的多分支需要的内存也可能不一样,我们只有在运行期间才能制动创建哪些对象.这部分内存分配与回收都是动态的,而垃圾回收器所关注的就是这些这部分内 ...
- Redux----Regular的Redux实现整理
Regular的Redux实现整理 什么问题? 组件的树形结构决定了数据的流向,导致的数据传递黑洞 怎么解决? 所有组件都通过中介者传递共享数据 方案: 中介者: (function create ...