博客五部曲之二 - 高级博客
1456 浏览 5 years, 11 months
3 渲染HTML和Markdown
版权声明: 转载请注明出处 http://www.codingsoho.com/当前的帖子内容显示非常简单instance.content|linebreak,但是如果我们想在里面嵌入HTML代码显示时就不行了。
一种方法是instance.content|safe,HTML代码会直接显示为相应的内容,但是这种非常并非高效。
本文会引入markdown这个流行的博客编辑语言,有很多种方法可以来渲染markdown,本文实现是通过JavaScript在前端实现。
首先安装JQuery,访问http://code.jquery.com/, 拷贝JQuery 1.12.4
<script src="[http://code.jquery.com/jquery-1.12.4.min.js](http://code.jquery.com/jquery-1.12.4.min.js)" integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
另外,我们要安装另外一个库marked,它会发布和编译markdown,从网上找了一个CDN
https://cdn.bootcss.com/marked/0.3.19/marked.min.js
在post_detail.html添加容器显示markdown内容
<div class="row">
<div class="col-sm-12">
<div class="content-markdown">{{instance.content}}</div>
</div>
</div>
在base文件里添加对它的处理
<script type="text/javascript">
$(document).ready(function(){
$(".content-markdown").each(function(){
var content = $(this).text()
console.log(content)
var markedContent = marked(content)
console.log(markedContent)
$(this).html(markedContent)
})
})
</script>
$(document).ready内容在页面加载完成之后就会执行。
$(".content-markdown").each表示轮询class为content-mark的每一个元素并执行函数内容,首先读取元素内容,然后通过marked函数转换,再把它回显到原位置。
如果输入#head1,它会显示为一级标题