针对博客和论坛类网站,用户需要在网页的富文本框中输入内容传递到后端。那么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.pyINSTALLED_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富文本框使用详解相关推荐

  1. tinymce富文本框踩坑

    tinymce富文本框踩坑 1.页面中需要多个富文本框时,每个富文本框的id必须做唯一标识,否则无法编辑 2.在tinymce富文本框需要做判断来显示时,谨慎使用v-if和v-show v-if会使富 ...

  2. iOS富文本字符串AttributedString详解

    原文链接: iOS富文本字符串AttributedString详解 简书主页:http://www.jianshu.com/users/37f2920f6848 Github主页:https://gi ...

  3. tinymce富文本框照片上传

    TinyMCE是一款易用.且功能强大的所见即所得的富文本编辑器.同类程序有:UEditor.Kindeditor.Simditor.CKEditor.wangEditor.Suneditor.froa ...

  4. 微信小程序富文本rich-text使用详解-微信小程序系统学习攻略​

    也许你迷茫,但是我想说,在你迷茫的同时,保持本心,过好今天就好. 在微信小程序开发中,rich-text 标签可以用来显示富文本 html内容,可以渲染部分html标签,全局支持class和style ...

  5. 富文本框TinyMCE4.8上传本地图片基本配置(前端篇)

    最近使用了一下TinyMCE富文本框,感觉是非常不错的一款,配置简单,界面优美,完全免费...推荐大家使用. 官方文档也比较容易阅读,大家有兴趣的可以自己去看看https://www.tiny.clo ...

  6. Tinymce富文本使用教程

    文章目录 1. 开始 2. 快速使用 引入tinymce脚本 3. 常用配置 selector language language_url height readonly plugins toolba ...

  7. 【超详细】Tinymce富文本使用教程

    Tinymce基础使用手册 1. 开始 官网文档:www.tiny.cloud/docs/ 社区版及开发版官方最新打包地址:www.tiny.cloud/get-tiny/self-hosted/ 汉 ...

  8. django(7)modelform操作及验证、ajax操作普通表单数据提交、文件上传、富文本框基本使用...

    一.modelForm操作及验证 1.获取数据库数据,界面展示数据并且获取前端提交的数据,并动态显示select框中的数据 views.py from django.shortcuts importr ...

  9. 常用的富文本框插件FreeTextBox、CuteEditor、CKEditor、FCKEditor、TinyMCE、KindEditor ;和CKEditor实例...

    目前市面上用的比较多的富文本编辑器有: FreeTextBox 一个有很多年历史的富文本编辑器了,使用简单,而且一般的使用是免费的,但是不开源,上传图片上传附件等功能没有,扩展性差. CuteEdit ...

最新文章

  1. 李嘉骐:03 PyTorch模块与基础实战
  2. 动态数组怎么定义_Excel VBA 数组基础知识,初学者不可不学的关键知识
  3. ACM - 算法篇,基础题目
  4. 张亚勤:未来10年AI+生物制药大有可为,我们正开展破壁计划 | MEET2022
  5. CentOS系统Yum源配置
  6. 说说对npm的开发模式和生产模式的理解
  7. 安卓期末项目源码_手机随时随地写Python,还可以开发安卓APP,太厉害了!
  8. 服务器实际显示内存,服务器实际显示内存大小
  9. linux抓包命令tcptrace,每天学习一个命令:tcpdump 命令行下抓包
  10. 好看的php表格样式,CSS_CSS实现的清爽、漂亮的表格样式分享,效果: 实现代码:复制代码 - phpStudy...
  11. 原生js滚动到底部加载数据和下拉刷新 Scrollload
  12. 2013-07-29 IT 要闻速记快想
  13. pyqtSignal信号和槽
  14. UIScrollView setContentOffset: animated:YES 偶尔卡顿解决方案
  15. 什么是软件质量管理的底层逻辑?
  16. DCSTFN(使用深度卷积网络融合高时空遥感图像)
  17. 什么样的运动耳机比较好、跑步运动耳机推荐
  18. Keil的AC6与AC5中文手册
  19. 印象笔记Evernote 教程
  20. 又一家云服务关停,这回是网易

热门文章

  1. 《算力网络核心技术与应用生态解析》线上高级研修班
  2. 库卡机器人会卡顿吗_KUKA机器人使用经验总结
  3. MobData研究院,一个操作让游戏 营销ROI 翻了3倍
  4. Spring Boot前后端分离之后端开发
  5. 期货交易基础学习——买开,卖平,卖开,买平
  6. ABAPFI FI/CO接口:待更新的不一致的FI/CO凭证标题数据
  7. php做五星评价系统,微信小程序之五星评价功能制作
  8. CoreGraphics 画图,(转燕羽天空)
  9. 培养孩子的时间管理能力是如此的重要!
  10. python画板颜色_Python数据可视化:Seaborn(二):色板