django管理后台集成tinymce
标签:
日期: 2024-01-06 | 作者: 七七 | 浏览: 114

习惯了使用富文本输入实现博客后台,由于最近django-ckeditor有点异常,折腾的心又开始骚动了,想着换其他的试下。

翻了下,发现除了收费的django-froala,也就django-tinymce最和心意了,其实整体跟ckeditor没啥大的差别,不过感觉比ckeditor美观大气许多…

对我而言日常使用除了图片上传功能没实现,其他功能都有了的,开始折腾。

1.  安装下载
pip install django-tinymce
2. 添加应用
# settings.py
INSTALLED_APPS = [
    ……
    # 添加tinymce应用
    'tinymce',
]
3. 配置URL
# urls.py
urlpatterns = [
    path('admin/', admin.site.urls),
    # 增加url
    path('tinymce/', include('tinymce.urls')),
] 
4. 使用HTMLField
# models.py
from tinymce.models import HTMLField

# 详情
class Post(models.Model):
    title = models.CharField('标题', max_length=50)
    # 直接使用
    content = HTMLField(verbose_name='详情')
    ……
5. 数据库同步
# 编译
python manage.py makemigrations
# 同步
python manage.py migrate
6. 个性化配置
# settings.py
# Tinymce 参考配置
TINYMCE_DEFAULT_CONFIG = {
    "height": "600px",
    "width": "960px",
    "menubar": False,
    # 按需配置各种插件
    "plugins": "advlist lists link image  preview emoticons charmap"
               "media table paste code codesample wordcount fullscreen",
    # 根据个人喜好配置工具栏
    "toolbar": "styles aligncenter alignright alignjustify numlist bullist"
               "|blockquote codesample table link image media"
               "|forecolor backcolor removeformat"
               "|hr emoticons preview help",
    "custom_undo_redo_levels": 8,
    "language": "zh-Hans",
    # 定义code sample代码种类,可以自行增、删、排序等
    "codesample_languages": [
        {"text": "Python", "value": "python"},
        {"text": "JAVA", "value": "java"},
        {"text": "PHP", "value": "php"},
        {"text": "XML", "value": "xml"},
    ]
}
7. 前台页面展示
# 详情页
# | safe 过滤器‌用于告诉Django模板系统,我们的content是安全的,不需要进行HTML转义
……
{{ post.content|safe }}
……
8. 代码高亮相关
# tinymce自带的是Prism.js,admin端懒的折腾了,前端展示页面,改用hightlight.js实现

# 详情页
# 引入喜欢的主题css文件
<link href="{% static 'xxxx/css/darcula.min.css' %}" rel="stylesheet">
# 引入highlight.js文件
<script src="{% static 'xxxx/js/highlight.min.js' %}"></script>
<script>hljs.highlightAll();</script>