1. 概览

Django下可以使用的富文本编辑器有很多。具体可以查看django文本编辑器对比大全。其中以django-ckeditor,django-tinymce和django-summernote这三个最为出名,这三个是功能比较强大也好用的代表,作者对其更新也比较及时。summernote是其中一款功能齐全、配置又十分简单的RTE,本篇主要对其使用做介绍。

参考资料:
summernote作者官方文档

PS: 本文的教学基于pycharm来完成,请注意。

版本信息:
Django: 1.86
Python: 3.4

2. 安装

在pycharm使用ctrl+alt+s打开设置,使用IDE自带的包管理工具安装summernote

3. 配置

修改以下文件

settings.py

添加'django_summernote'到INSTALLED_APPS

INSTALLED_APPS = (
 #其他内容...
 'django_summernote',
)

urls.py

添加django_summernote.urls到urls.py.

url(r'^summernote/', include('django_summernote.urls')),

4.启用summernote代替TextField

在admin.py定义一个类来装饰其他的model类,替换TextField的功能

admin.py

from django_summernote.admin import SummernoteModelAdmin
class PageModelAdmin(SummernoteModelAdmin):
    pass

#注册其他类的时候可以使用SomeModelAdmin
admin.site.register(Page,PageModelAdmin)
#Page类在models.py中的定义
class Page(models.Model):
    title = models.CharField(u'标题', max_length=256)
    content = models.TextField(u'内容')
    pub_date = models.DateTimeField(u'发表时间', auto_now_add=True, editable=True)
    update_time = models.DateTimeField(u'更新时间',auto_now=True, null=True)
    category = models.ForeignKey(Category)          #ForeignKey, 创建1对多关系的字段类型.
    url = models.URLField()
    views = models.IntegerField(default=0)

    class Meta:
        verbose_name = '文章'
        verbose_name_plural = '文章'

    def __str__(self):
        return self.title       #按照标题来显示每个实例,也就是一行数据

PS:admin后台model类显示自定义名字的方法: 按照上面定义Page Model类的时候一样,只要定义verbose_name和verbose_name_plural即可,第二个是复数形式。

5.admin中上传文件的设置

在settings.py中配置midea目录即可

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 上传文件的URL基地址
MEDIA_URL = "media/"
# 上传文件保存的绝对路径
MEDIA_ROOT = os.path.join(BASE_DIR, "media")

6. 更多使用配置

暂时请参考作者的githun,等我用到更多内容的时候再来更新。