【Django 027】tinymce富文本框使用详解
针对博客和论坛类网站,用户需要在网页的富文本框中输入内容传递到后端。那么Django项目如何生成一个包含富文本框的页码,又如何获取用户上传的富文本内容呢?这一节我们就一起来看看。
我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。
文章目录
- 富文本框
- Django的富文本框插件
- 安装tinymce
- 注册tinymce
- 创建数据模型
- 创建HTML页面
- 富文本数据模型
- 总结
富文本框
所谓富文本(Rich Text Format, RTF),就是包含各种格式的文字。
大家熟悉的markdown就是一种生成带格式文字的工具,不过markdown使用特殊符号来形成格式,而富文本框就是通过点击按钮来生成带格式文字的工具。下图是个典型的富文本框
Django的富文本框插件
这里我们使用tinymce插件来实现网页中的富文本框。网上有很多别的插件,使用方法都差不多,tinymce如果觉得不够炫酷,也可以找别的插件。重要的是知其所以然。
安装tinymce
直接pip install django-tinymce
或者在pycharm的设置中安装
注册tinymce
有些python模块安装好后就可以直接被当作一个应用加入到django项目中,这个tinymce就是其中之一。
后面我们在学习如何自己写可以重复使用的django应用
- 首先在项目的
settings.py
的INSTALLED_APPS
中添加tinymce
- 同时在
settings.py
中添加一个默认配置
TINYMCE_DEFAULT_CONFIG = {'theme': 'advanced','width': 800,'height': 600,
}
创建数据模型
用户上传的富文本需要用专门的字段来存储,这个tinymce也替我们想到了。
from django.db import models# Create your models here.
from tinymce.models import HTMLFieldclass Blog(models.Model):b_content = HTMLField()
这里的HTMLField
继承自models.TextField
.
之后迁移到数据库,看看DDL如下
create table App_blog
(id int auto_incrementprimary key,b_content longtext not null
);
其实就是一个SQL中的longtext字段
创建HTML页面
下面开始在页面中应用,虽说随着前后的分离,网页主要是前端生成,不过这里为了演示方便采用django后端生成的方式。
富文本还可以在后台管理中使用,后面我们再学
创建一个页面blog.html
如下
{% load static %}
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Edit Blog</title><script type="text/javascript" src="/static/tinymce/tinymce.min.js"></script><script type="text/javascript">tinyMCE.init({'mode':'textareas','theme': 'silver','width': 800,'height': 600,});</script>
</head>
<body>
<form action="#", method="post">{% csrf_token %}<textarea name="" id="" cols="30" rows="10"></textarea>
</form>
</body>
</html>
这个页面有下面几点要说明
- 要应用tinymce中的一个静态js文件,这里用的是绝对路径。如果要用相对路径,之前说过app级别的配置为
STATIC_URL
,项目级别的配置为STATICFILES_DIRS
,配置为STATIC_URL = '/static/'
的情况下可以用下面的方式
<script type="text/javascript" src="{% static 'tinymce/tinymce.min.js' %}"></script>
- 不同版本的tinymce对应的js文件名也不一致,我下载的tinymce版本是3.0.2,名称为
tinymce.min.js
,根据实际情况去填写,不然在浏览器的console会有404的报错 - 同样的
theme
也要根据实际的名字去填写,不然会有404报错
之后创建如下路由和view函数
path('editblog/', views.edit_blog, name='edit_blog'),
def edit_blog(request):return render(request, 'blog.html')
请求页面结果如下
富文本数据模型
下面将数据传递到后端看看这些带格式的文字究竟是如何存储的。
修改下h5页面,加入提交按钮和链接
<body>
<form action="{% url 'app:edit_blog' %}", method="post">{% csrf_token %}<textarea name="content" id="" cols="30" rows="10"></textarea><input type="submit">
</form>
</body>
修改下view函数
def edit_blog(request):if request.method == 'GET':return render(request, 'blog.html')elif request.method == 'POST':content = request.POST.get('content', '')blog = Blog()blog.b_content = contentblog.save()return HttpResponse('saved')
编辑一下富文本,然后提交
进数据库中查看,发现存储的就是HTML
将这段HTML直接显示在网页上就变成了含有格式的文字。
总结
几个知识点总结下
- 实现富文本的插件有很多,不能局限于tinymce
- 不同版本的tinymce下载后包含的js和theme的名字会有所差异
- 富文本发送到后端还是以HTML的格式保存,可以直接显示在网页上
【Django 027】tinymce富文本框使用详解相关推荐
- tinymce富文本框踩坑
tinymce富文本框踩坑 1.页面中需要多个富文本框时,每个富文本框的id必须做唯一标识,否则无法编辑 2.在tinymce富文本框需要做判断来显示时,谨慎使用v-if和v-show v-if会使富 ...
- iOS富文本字符串AttributedString详解
原文链接: iOS富文本字符串AttributedString详解 简书主页:http://www.jianshu.com/users/37f2920f6848 Github主页:https://gi ...
- tinymce富文本框照片上传
TinyMCE是一款易用.且功能强大的所见即所得的富文本编辑器.同类程序有:UEditor.Kindeditor.Simditor.CKEditor.wangEditor.Suneditor.froa ...
- 微信小程序富文本rich-text使用详解-微信小程序系统学习攻略
也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好. 在微信小程序开发中,rich-text 标签可以用来显示富文本 html内容,可以渲染部分html标签,全局支持class和style ...
- 富文本框TinyMCE4.8上传本地图片基本配置(前端篇)
最近使用了一下TinyMCE富文本框,感觉是非常不错的一款,配置简单,界面优美,完全免费...推荐大家使用. 官方文档也比较容易阅读,大家有兴趣的可以自己去看看https://www.tiny.clo ...
- Tinymce富文本使用教程
文章目录 1. 开始 2. 快速使用 引入tinymce脚本 3. 常用配置 selector language language_url height readonly plugins toolba ...
- 【超详细】Tinymce富文本使用教程
Tinymce基础使用手册 1. 开始 官网文档:www.tiny.cloud/docs/ 社区版及开发版官方最新打包地址:www.tiny.cloud/get-tiny/self-hosted/ 汉 ...
- django(7)modelform操作及验证、ajax操作普通表单数据提交、文件上传、富文本框基本使用...
一.modelForm操作及验证 1.获取数据库数据,界面展示数据并且获取前端提交的数据,并动态显示select框中的数据 views.py from django.shortcuts importr ...
- 常用的富文本框插件FreeTextBox、CuteEditor、CKEditor、FCKEditor、TinyMCE、KindEditor ;和CKEditor实例...
目前市面上用的比较多的富文本编辑器有: FreeTextBox 一个有很多年历史的富文本编辑器了,使用简单,而且一般的使用是免费的,但是不开源,上传图片上传附件等功能没有,扩展性差. CuteEdit ...
最新文章
- 李嘉骐:03 PyTorch模块与基础实战
- 动态数组怎么定义_Excel VBA 数组基础知识,初学者不可不学的关键知识
- ACM - 算法篇,基础题目
- 张亚勤:未来10年AI+生物制药大有可为,我们正开展破壁计划 | MEET2022
- CentOS系统Yum源配置
- 说说对npm的开发模式和生产模式的理解
- 安卓期末项目源码_手机随时随地写Python,还可以开发安卓APP,太厉害了!
- 服务器实际显示内存,服务器实际显示内存大小
- linux抓包命令tcptrace,每天学习一个命令:tcpdump 命令行下抓包
- 好看的php表格样式,CSS_CSS实现的清爽、漂亮的表格样式分享,效果:
实现代码:复制代码 - phpStudy...
- 原生js滚动到底部加载数据和下拉刷新 Scrollload
- 2013-07-29 IT 要闻速记快想
- pyqtSignal信号和槽
- UIScrollView setContentOffset: animated:YES 偶尔卡顿解决方案
- 什么是软件质量管理的底层逻辑?
- DCSTFN(使用深度卷积网络融合高时空遥感图像)
- 什么样的运动耳机比较好、跑步运动耳机推荐
- Keil的AC6与AC5中文手册
- 印象笔记Evernote 教程
- 又一家云服务关停,这回是网易