专栏首页菲宇Django使用Markdown排版、语法高亮和生成目录

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文链接:https://blog.csdn.net/bbwangj/article/details/98026885

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 %}
    <link rel="stylesheet" href="{% static 'blog/css/github.css' %}">
{% endblock %}

标签和正文都加salf

(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)
```

前端显示效果:

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Django开发网页计数器统计页面浏览次数

    实际Web开发过程中,我们经常要统计并显示一个页面的浏览次数。今天我们会以博客的例子,教你如何利用Django开发网页计数器,统计并显示一篇文章的浏览次数。本文...

    菲宇
  • Django获取应用下的所有models

    菲宇
  • 服务端图片处理神器Django-imagekit

    要在 Django 使用 ImageField 模块,必须先安装第三方库 Pillow:

    菲宇
  • Django实战-信息资讯-资讯模型

    Django网络应用开发的5项基础核心技术包括模型(Model)的设计,URL 的设计与配置,View(视图)的编写,Template(模板)的设计和Form(...

    小团子
  • Django项目知识点(三)

    模型是数据唯一而且准确的信息来源。它包含正在储存的数据的重要字段和行为。一般来说,每一个模型都映射一个数据库表。

    润森
  • django orm 重点大全

    玩蛇的胖纸
  • Django ORM 知识概要

    注: 本文知识点是根据自己的项目经验及慕课网的教学视频整理所得, 如需转载请注明出处:https://www.cnblogs.com/zhuchenglin/...

    lin_zone
  • CRM客户关系管理系统(二) 第三章、前端页面设计

    zhang_derek
  • python之MySQLdb模块

      在说这个模块之前,我们先来想一下在命令行模式下操作mysql数据库的步骤,一般来说分为三步:

    py3study
  • 设计模式

    这点深有体会,越是复杂的交互,越容易造成系统的偏离。所以,最近我在实验的一款编辑器,努力在保持简单的交互,并保持丰富的功能。

    mixlab

扫码关注云+社区

领取腾讯云代金券