# pip install django-ckeditor
# pip insatll pillow

# settings.py
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01.apps.App01Config',
    'ckeditor',
    'ckeditor_uploader'
]
CKEDITOR_UPLOAD_PATH = 'upload/'    # 指定上传的目录
CKEDITOR_CONFIGS = {
    'default': {
        'language': 'zh-cn',    # 指定使用的语言
        'width': 'auto',
        'height': '150px',
        'image_previewText': '',
        'tabSpaces': 4,
        'toolbar': 'Custom',
        'toolbar_Custom': [
            ['Bold', 'Italic', 'Underline', 'Format', 'RemoveFormat'],
            ['NumberedList', 'BulletedList'],
            ['Blockquote', 'CodeSnippet'],
            ['Image', 'Link', 'Unlink'],
            ['Maximize']
        ],
        'extraPlugins': ','.join(['codesnippet', 'uploadimage', 'widget', 'lineutils']),
    },
    'custom': {
        # models.py content = RichTextUploadingField(config_name='custom') 在model中通过名称指定使用
    }
}



# 在一级urls.py中配置 
url(r'^ckeditor/', include('ckeditor_uploader.urls')),



# 在models.py中引用 RichTextField不支持上传图片, RichTextUploadingField支持上传图片

from ckeditor.fields import RichTextField    
from ckeditor_uploader.fields import RichTextUploadingField
class Blog(models.Model):
    name = models.CharField(verbose_name='名称', max_length=25)
    author = models.CharField(verbose_name='作者', max_length=25)
    context = RichTextField()
    context2 = RichTextUploadingField(default='')
    def __str__(self):
        return self.name


# 在setting.py中配置静态文件
STATIC_URL = '/static/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static')]

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'static/media')

# 一级url中
from django.conf.urls.static import static
from django.conf import settings
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)



# 修改ckeditor_upload/urls.py 
# django-ckeditor默认只允许管理员(staff_member)上次图片, 普通用户使用需要将装饰器替换成login_required

"""
urlpatterns = [
    url(r"^upload/", staff_member_required(views.upload), name="ckeditor_upload"),
     url(
        r"^browse/",
        never_cache(staff_member_required(views.browse)),
        name="ckeditor_browse",
    ),
]"""
urlpatterns = [
    url(r"^upload/", login_required(views.upload), name="ckeditor_upload"),
     url(
        r"^browse/",
        never_cache(login_required(views.browse)),
        name="ckeditor_browse",
    ),
]