Django使用Markdown排版、语法高亮和生成目录

class Entry(models.Model):
    title = models.CharField('文章标题',max_length=128)
    author = models.ForeignKey(User,verbose_name='作者',on_delete=models.CASCADE)
    img = models.ImageField(upload_to='blog_img',null=True,blank=True,verbose_name='博客配图')
    body = models.TextField('正文',)
    abstract = models.TextField('摘要',max_length=256,null=True,blank=True)
    visiting = models.PositiveIntegerField('访问量',default=0)
    category = models.ManyToManyField('Category',verbose_name='博客分类')
    tags = models.ManyToManyField('Tag',verbose_name='标签')
    created_time = models.DateTimeField('创建时间',auto_now_add=True)
    modifyed_time = models.DateTimeField('修改时间',auto_now=True)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['-created_time']
        verbose_name = '博客正文'
        verbose_name_plural = verbose_name

(1)安装模块

pip install markdown

pip install pygments

(2)views.py

import markdown,pygments

def detail(request,blog_id):
    entry = models.Entry.objects.get(id=blog_id)
    md = markdown.Markdown(extensions=[
        'markdown.extensions.extra',
        'markdown.extensions.codehilite',
        'markdown.extensions.toc',
    ])
    entry.body = md.convert(entry.body)
    entry.toc = md.toc
    entry.increase_visiting()

    return render(request,'blog/detail.html',locals())

(3)detail.html

把github.css放到blog/css里面,detail.html引用样式

{% extends 'blog/base.html' %}
{% load staticfiles %}

{% block title %}博客详情页{% endblock %}
{% block css %}
    
{% endblock %}

标签和正文都加salf

Django使用Markdown排版、语法高亮和生成目录_第1张图片

 (4)后台添加博客

Markdown语法测试篇

## 1.python语言介绍
   编程语言主要从以下几个角度进行分类:编译型,静态型,动态性,强类型定义语言和弱类型定义语言

 - 编译型:有一个负责翻译的程序来对我们的源代码进行转换,生成对应的可执行代码,这个过程就是编译(Compile),而负责编译的程序就被称为编译器(Compiler)

 - 通常我们所说的动态语言,静态语言是指动态类型语言和静态类型语言
 

## 2.python的优缺点

 - 优点:简单、开发效率高、高级语言、可移植性、可扩展性、可嵌入性

 - 缺点:速度慢,但是相对的、代码不能加密、线程不能利用多CPU问题

## 3.高阶函数
```python
def func():
    print('in the func')
    return foo()
def foo():
    print('in the foo()')
    return 666

res = func()
print(res)
```

前端显示效果:

Django使用Markdown排版、语法高亮和生成目录_第2张图片

你可能感兴趣的:(#,Django)