
python测试开发django-56.模板渲染markdown语法+代码高亮
发布日期:2021-05-09 09:02:03
浏览次数:12
分类:博客文章
本文共 2755 字,大约阅读时间需要 9 分钟。
前言
上一篇已经实现在xadmin后台编辑markdown语法的文档,编辑完成之后发布博客,在前端html能把markdown语法显示出来。
主要思路是先从数据库把markdown的代码读出来,导入markdown模块,把markdown的语法转换成html语法,再嵌入到模板里面。markdown
先使用pip按照markdown模块,用于转换markdown为html
pip install markdown
在后台页面编辑的markdown内容,markdown里面插入代码一般有两种方式:一种是把代码全部选中,然后缩进(四个空格)
第二种是代码部分用三个```包起来,后面可以跟着对应语言python,如下(这里不太好展示,前面的\要去掉)# django 框架介绍Django 项目是一个Python定制框架,它源自一个在线新闻 Web 站点,于 2005 年以开源的形式被释放出来。Django 框架的核心组件有:- 用于创建模型的对象关系映射- 为最终用户设计的完美管理界面- 一流的 URL 设计- 设计者友好的模板语言- 缓存系统。# 图片展示图片显示# 代码展示\```python # 前面的\去掉from django.db import modelsfrom mdeditor.fields import MDTextField # 必须导入class Blog(models.Model):'''博客管理''' title = models.CharField(max_length=30) content = MDTextField() # 注意为MDTextField()def __str__(self): return self.__doc__ + "title->" + self.titleclass Meta: verbose_name = "博客发布" verbose_name_plural = verbose_name\``` # 前面的\去掉
views试图
在views.py中导入markdown,这里extensions里面三个参数用法,
- markdown.extensions.extra 本身包含很多扩展
- markdown.extensions.codehilite 是语法高亮,后面插入代码会用到
- markdown.extensions.toc 是自动生成目录
from .models import Blogimport markdowndef detail(request, id): '''博客详情展示, 根据id读取''' blog = Blog.objects.filter(id=int(id)).first() blog.content = markdown.markdown(blog.content, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ], safe_mode=True, enable_attributes=False) context = { "blogmd": blog } return render(request, 'blogmd.html', context)
templates模板
接下来把markdown的内容插入到以下模板的{{ blogmd.content | safe}}
位置,这里需加个safe参数,
{{blogmd.title}} {{blogmd.title}}
{{ blogmd.content | safe}}
文件名保存为blogmd.html
urls.py设置
urls.py设置访问地址
from django.conf.urls import urlfrom hello import viewsurlpatterns = [ url(r'^blog/(.+).html$', views.detail),]
访问地址:http://localhost:8000/blog/2.html
页面效果如下
代码高亮展示
这里代码部分,默认是不会有背景的,也不会也高亮,如下图
代码高亮展示需要安装Pygments模块
pip install Pygments
接着在你的app的static目录新建一个css目录:hello/static/hello/css
打开cmd, cd到hello/static/hello/css
目录,执行以下指令,会在当前目录生成一个code.css文件
pygmentize -S default -f html -a .codehilite > code.css
在模板里面引入这个css文件就可以了,在head里面加一个link
<link rel="stylesheet" href="../static/hello/css/code.css" type="text/css">
刷新页面后,就能显示高亮的代码了
发表评论
最新留言
很好
[***.229.124.182]2025年03月30日 16时08分34秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
不使用for或while实现循环功能(JavaScript)
2019-03-07
自定义vue模板(name默认是文件名)
2019-03-07
Mysql 库和表的导入导出(windows)
2019-03-07
导出 下载excel 方案(点击下载,下载一个excel模板)
2019-03-07
转义字符的打印
2019-03-07
git拉取远程指定分支代码
2019-03-07
蓝桥杯之垒骰子
2019-03-07
怎样用C语言实现一个扫雷的游戏?
2019-03-07
C语言--C语言总结大纲
2019-03-07
怎样使用switch循环?
2019-03-07
轻松理解前后端分离(通俗易懂)
2019-03-07
SpringCloud学习笔记(第六章):服务熔断Hystrix
2019-03-07
sqlmap的windows安装教程
2019-03-07
虚拟机提示“虚拟设备在启动时将处于断开连接状态”
2019-03-07
LeetCode(175)--组合两个表
2019-03-07
LeetCode(1672)--最富有客户的资产总量
2019-03-07
LeetCode(1678) -- 设计Goal解析器
2019-03-07
蚂蚁金服(Java研发岗),26岁小伙斩获三面,收获Offer定级P6
2019-03-07
网站无法复制怎么办?
2019-03-07
JavaFX官方文档
2019-03-07