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>