用Python制作markdown编辑器
还记得在上篇提到的rest-framework,文档中提到了markdown也是可选应用。
那么这篇我们就来尝试使用markdown来制作一个在线的可以预览的editor。
安装 Python Markdown
pip install markdown
使用起来简单地就是两个函数:
- markdown(text)
 - markdownFromFile(input, output)
 
具体参见文档:http://pythonhosted.org/Markdown/index.html
markdown(text)会直接把text转换成html格式返回。
我们在应用中就用这个就行了。
首先,在views.py中添加视图:
...
from markdown import markdown
...
def mdeditor(request):
    preview_html = ""
    if request.method == 'POST':
        md_content = request.POST['md_content']
        print("md_content: {}".format(md_content))
        preview_html = markdown(md_content)
    context = {'preview_html':preview_html,}
    return render(request, 'post/mdeditor.html', context)
将从post穿过来的md_content转换成html格式。然后传给post/mdeditor.html这个template返回给浏览器。
所以下一步就是建立一个这样的模板。
<html>
<head><title>markdow editor</title>
<script type="text/javascript">
    function getEditorContent(){
        document.getElementById("md_content").value = document.getElementById("editor").innerHTML;
    }
</script>
</head>
<body>
<div id="editor" style="padding-bottom: 200px" contenteditable="true">
</div>
<form action="mdeditor" method="post" onsubmit="getEditorContent()">
    {% csrf_token %}
    <input type="hidden" id="md_content" name="md_content"/>
    <input  type="submit" />
</form>
{{ preview_html | safe }}<br>
</body>
</html>
- 我们使用
来做编辑器。那么要在表单中返回服务器,就需要将这个值付给一个input标签,就像上面代码做的一样。
- 从views.py传过来的preview_html默认会对一些字符进行转义,所以需要添加 | safe
 
打开浏览起就可以看到效果啦。我们这里使用了python markdown这个应用,可以看到相当的方便。
在上面的代码中,如果使用ajax将内容传回就更好了。但是如果javascript就有markdown的相应的应用就不用传回服务器了,所以如果真要自己使用那么还是找相应的js库方便。用Python制作markdown编辑器的更多相关文章
- Python技能树及CSDN MarkDown编辑器测评
		
测评目录 python技能树测评 python技能树是什么 python技能树长什么样 如何学习python技能树 python技能树可能需要的改进 对python技能树的总结 CSDN MarkDo ...
 - 自己动手制作更好用的markdown编辑器-01
		
这里文章都是从个人的github博客直接复制过来的,排版可能有点乱. 原始地址 http://benq.im 文章目录 1. 简介 2. 项目结构 3. 程序主界面 4. 拖动窗口 5. app ...
 - mac好用的markdown编辑器
		
在刚开始接触markdown的时候,就被吸引了.此后一直在找贴心的好用的markdown编辑器.印象笔记和马克飞象配合着用也是挺好的,唯一的缺点就是比较封闭,发个笔记的链接给同学,还得注册才能看,导致 ...
 - Markdown编辑器语法指南2
		
人的一切痛苦, 本质上都是对自己的无能的愤怒. --王小波 1 Markdown编辑器的基本用法 1.1 代码 如果你只想高亮语句中的某个函数名或关键字,可以使用 `function_name()` ...
 - NanUI for Winform 使用示例【第二集】——做一个所见即所得的Markdown编辑器
		
经过了这一个多星期的调整与修复,NanUI for .NET Winform的稳定版已经发布.应广大群友的要求,现已将NanUI的全部代码开源. GitHub: https://github.com/ ...
 - 使用python制作ArcGIS插件(2)代码编写
		
使用python制作ArcGIS插件(2)代码编写 by 李远祥 上一章节已经介绍了如何去搭建AddIn的界面,接下来要实现具体的功能,则到了具体的编程环节.由于使用的是python语言进行编程,则开 ...
 - 使用python制作ArcGIS插件(1)工具介绍
		
使用python制作ArcGIS插件(1)工具介绍 by 李远祥 ArcGIS从10.0开始支持addin(ArcGIS软件中又叫作加载项)的方式进行插件制作.相对于以往9.x系列,addin的无论是 ...
 - Linux编辑器篇-分享10个最好的Markdown编辑器
		
在这篇文章中,兄弟连Linux培训会分享一些可以在 Linux 上安装使用的最好的 Markdown 编辑器.虽然你在 Linux 平台上能找到非常多的 的 Markdown 编辑器,但是在这里我们将 ...
 - Markdown编辑器使用说明
		
Markdown编辑器使用说明 #编辑器使用说明编辑器仅用来编辑文章的样式,建议在其他文档中写好内容,再复制到此处编辑样式--- ## 编辑器使用介绍—非开发者 非开发者,可以将编辑框内容全部删掉,使 ...
 
随机推荐
- [转]IBInspectable / IBDesignable
			
原文:http://www.cocoachina.com/ios/20150227/11202.html 无论陈词滥调多少次,比起一个需要我们记住并且输入什么的界面来说,如果替换成我们能够看见并可控制 ...
 - MYSQL错误解决:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)
			
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' ( ...
 - ASP.ENT中上一篇和下一篇
			
前台页面:<div class="mtgz_prev_next"> <p> <span class="textcolor ...
 - C# 代码转换到Python
			
下载地址:http://pan.baidu.com/s/1dDAZJxv SharpDevelop 3.1 now supports converting C# and VB.NET code to ...
 - poj3237--Tree  树链剖分
			
题意:三种操作 ①修改第i条边的权值为val,②把u到v路径上的所有边的权值 去相反数③求u 到v路径上最大的边权 线段树的区间更新还是不熟练,,一直搞不对调试了好久还是没对,最后还是看的kuangb ...
 - 符号表实现(Symbol Table Implementations)
			
符号表的实现有很多方式,下面介绍其中的几种. 乱序(未排序)数组实现 这种情况,不需要改变数组,操作就在这个数组上执行.在最坏的情况下插入,搜索,删除时间复杂度为O(n). 有序(已排序)数组实现 这 ...
 - AngularJs学习笔记2——四大特性之MVC
			
angularJs的四大特性 ①.采用MVC的设计模式 ②.双向数据绑定 ③.依赖注入 ④.模块化设计 现在细说一下MVC的设计模式: MVC: Model(模型)--项目中的数据 View(视图)- ...
 - java 版本SQLHelper
			
package com.jack.SQLHelper; import java.sql.*;import java.util.logging.*;import javax.swing.table.*; ...
 - Javascript 文件操作(整理版)
			
Javascript 文件操作 一.功能实现核心:FileSystemObject 对象 其实,要在Javascript中实现文件操作功能,主要就是依靠FileSystemobject对象.在详细介绍 ...
 - HDU1285——确定比赛名次
			
Problem Description 有N个比赛队(1<=N<=500),编号依次为1,2,3,....,N进行比赛,比赛结束后,裁判委员会要将所有参赛队伍从前往后依次排名,但现在裁判委 ...