支持 Markdown 语法和代码高亮

2017-04-1271417 阅读206 评论

为了让博客文章具有良好的排版,显示更加丰富的格式,我们使用 Markdown 语法来书写我们的博文。Markdown 是一种 HTML 文本标记语言,只要遵循它约定的语法格式,Markdown 的渲染器就能够把我们写的文章转换为标准的 HTML 文档,从而让我们的文章呈现更加丰富的格式,例如标题、列表、代码块等等 HTML 元素。由于 Markdown 语法简单直观,不用超过 5 分钟就可以掌握常用的标记语法,因此大家青睐使用 Markdown 书写 HTML 文档。下面让我们的博客也支持使用 Markdown 书写。

安装 Python Markdown

将 Markdown 格式的文本渲染成标准的 HTML 文档是一个复杂的工作,好在已有好心人帮我们完成了这些工作,我们直接使用即可。首先安装 Markdown,这是一个 Python 第三方库,激活虚拟环境,然后使用命令 pip install markdown 安装即可。

在 detail 视图中渲染 Markdown

将 Markdown 格式的文本渲染成 HTML 文本非常简单,只需调用这个库的 markdown 方法即可。我们书写的博客文章内容存在 Postbody 属性里,回到我们的详情页视图函数,对 postbody 的值做一下渲染,把 Markdown 文本转为 HTML 文本再传递给模板:

blog/views.py

import markdown
from django.shortcuts import render, get_object_or_404
from .models import Post

def detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    # 记得在顶部引入 markdown 模块
    post.body = markdown.markdown(post.body,
                                  extensions=[
                                     'markdown.extensions.extra',
                                     'markdown.extensions.codehilite',
                                     'markdown.extensions.toc',
                                  ])
    return render(request, 'blog/detail.html', context={'post': post})

这样我们在模板中展示 {{ post.body }} 的时候,就不再是原始的 Markdown 文本了,而是渲染过后的 HTML 文本。注意这里我们给 markdown 渲染函数传递了额外的参数 extensions,它是对 Markdown 语法的拓展,这里我们使用了三个拓展,分别是 extra、codehilite、toc。extra 本身包含很多拓展,而 codehilite 是语法高亮拓展,这为我们后面的实现代码高亮功能提供基础,而 toc 则允许我们自动生成目录(在以后会介绍)。

来测试一下效果,进入后台,这次我们发布一篇用 Markdown 语法写的测试文章看看,你可以使用以下的 Markdown 测试代码进行测试,也可以自己书写你喜欢的 Markdown 文本。假设你是 Markdown 新手参考一下这些教程,一定学一下,保证你可以在 5 分钟内掌握常用的语法格式,而以后对你写作受用无穷。可谓充电五分钟,通话 2 小时。以下是我学习中的一些参考资料:

# 一级标题

## 二级标题

### 三级标题

- 列表项1
- 列表项2
- 列表项3

> 这是一段引用

​```python
def detail(request, pk):
    post = get_object_or_404(Post, pk=pk)
    post.body = markdown.markdown(post.body,
                                  extensions=[
                                      'markdown.extensions.extra',
                                      'markdown.extensions.codehilite',
                                      'markdown.extensions.toc',
                                  ])
    return render(request, 'blog/detail.html', context={'post': post})
​```

如果你发现无法显示代码块,即代码无法换行,请检查代码块的语法是否书写有误。代码块的语法如上边的测试文本中最后一段所示。

你可能想在文章中插入图片,目前能做的且推荐做的是使用外链引入图片。比如将图片上传到七牛云这样的云存储服务器,然后通过 Markdown 的图片语法将图片引入。Markdown 引入图片的语法为:![图片说明](图片链接)

safe 标签

我们在发布的文章详情页没有看到预期的效果,而是类似于一堆乱码一样的 HTML 标签,这些标签本应该在浏览器显示它本身的格式,但是 Django 出于安全方面的考虑,任何的 HTML 代码在 Django 的模板中都会被转义(即显示原始的 HTML 代码,而不是经浏览器渲染后的格式)。为了解除转义,只需在模板标签使用 safe 过滤器即可,告诉 Django,这段文本是安全的,你什么也不用做。在模板中找到展示博客文章主体的 {{ post.body }} 部分,为其加上 safe 过滤器,{{ post.body|safe }},大功告成,这下看到预期效果了。

safe 是 Django 模板系统中的过滤器(Filter),可以简单地把它看成是一种函数,其作用是作用于模板变量,将模板变量的值变为经过滤器处理过后的值。例如这里 {{ post.body|safe }},本来 {{ post.body }} 经模板系统渲染后应该显示 body 本身的值,但是在后面加上 safe 过滤器后,渲染的值不再是body 本身的值,而是由 safe 函数处理后返回的值。过滤器的用法是在模板变量后加一个 | 管道符号,再加上过滤器的名称。可以连续使用多个过滤器,例如 {{ var|filter1|filter2 }}。

Markdown 测试

代码高亮

程序员写博客免不了要插入一些代码,Markdown 的语法使我们容易地书写代码块,但是目前来说,显示的代码块里的代码没有任何颜色,很不美观,也难以阅读,要是能够像我们的编辑器里一样让代码高亮就好了。虽然我们在渲染时使用了 codehilite 拓展,但这只是实现代码高亮的第一步,还需要简单的几步才能达到我们的最终目的。

安装 Pygments

首先我们需要安装 Pygments,激活虚拟环境,运行: pip install Pygments 安装即可。

搞定了,虽然我们除了安装了一下 Pygments 什么也没做,但 Markdown 使用 Pygments 在后台为我们做了很多事。如果你打开博客详情页,找到一段代码段,在浏览器查看这段代码段的 HTML 源代码,可以发现 Pygments 的工作原理是把代码切分成一个个单词,然后为这些单词添加 css 样式,不同的词应用不同的样式,这样就实现了代码颜色的区分,即高亮了语法。为此,还差最后一步,引入一个样式文件来给这些被添加了样式的单词定义颜色。

引入样式文件

在项目的 blog\static\blog\css\highlights 目录下应该能看到很多 .css 样式文件,这些文件是用来提供代码高亮样式的。选择一个你喜欢的样式文件,在 base.html 引入即可(别忘了使用 static 模板标签)。比如我比较喜欢 github.css 的样式,那么引入这个文件:

templates/base.html

...
<link rel="stylesheet" href="{% static 'blog/css/pace.css' %}">
<link rel="stylesheet" href="{% static 'blog/css/custom.css' %}">
...
+ <link rel="stylesheet" href="{% static 'blog/css/highlights/github.css' %}">

这里 + 号表示添加这行代码。好了,看看效果,大功告成,终于可以愉快地贴代码了。

代码高亮

注意:如果你按照教程中的方法做完后发现代码依然没有高亮,请依次检查以下步骤:

2017.12.21 更新:完成以上步骤后先退出服务器然后重新 runserver,否则看不到高亮效果

  1. 确保在渲染文本时添加了 markdown.extensions.codehilite 拓展,详情见上文。
  2. 确保安装了 Pygments。
  3. 确保代码块的 Markdown 语法正确,特别是指明该代码块的语言类型,具体请参见上文中 Markdown 的语法示例。
  4. 在浏览器端代码块的源代码,看代码是否被 pre 标签包裹,并且代码的每一个单词都被 span 标签包裹,且有一个 class 属性值。如果没有,极有可能是前三步中某个地方出了问题。
  5. 确保用于代码高亮的样式文件被正确地引入,具体请参见上文中引入样式文件的讲解。
  6. 有些样式文件可能对代码高亮没有作用,首先尝试用 github.css 样式文件做测试。

总结

本章节的代码位于:Step9: markdown and code highlight supported

如果遇到问题,请通过下面的方式寻求帮助。

-- EOF --

206 评论
登录后回复
tgllsy
2019-07-15 14:13:49

markdown 转换成html后被转义如

&lt;h1&gt;标题 &lt;/h1&gt;

可以在 模板{{ post.body  }}外面嵌套{% autoescape off %}。如下

{% autoescape off %} 

 {{ post.body }} 

  {% endautoescape %}

结果

 <h1>标题</h1>

回复
waall-e
2019-06-25 10:27:38

我的python是3.6.8版本, markdown3.1.1, pygments2.3.1版本。

代码无法高亮是受评论中“张九十一”的启发,将python代码改为:

```python

post.body = markdown.markdown(post.body, extensions=['extra', 'codehilite', 'toc', ])

```

解决的。谢谢各位!

回复
shishutong
2019-05-10 22:12:12

我把【```python】还有【```】删了,并且整体向右4格,显示了.

回复
ZhangYizhao
2019-04-23 20:31:50

博主你好,我在服务器端部署好了网站但是有时候不会显示代码高亮,刷新一下就会显示,再刷新一下又没了,不知道是什么缘故

回复
BigOrange128
2018-12-03 14:05:42

请问博主为什么代码段里我写的html标记,会被渲染成这样?

原文:

 <!DOCTYPE html>    

<!--模板标签(具有类似函数的功能)-->    

{% load staticfiles %}    

{% load blog_tags %}    

<html>    

<head>

网页:

&lt;!DOCTYPE html&gt; 

&lt;!--模板标签(具有类似函数的功能)--&gt;

 {% load staticfiles %}

 {% load blog_tags %}

 &lt;html&gt; 

 &lt;head&gt;

回复
BigOrange128 BigOrange128
2018-12-19 09:05:05

解决了,没有指明该代码块的语言类型。平常没这么用过。尴尬!

回复
libaoshan55
2018-11-22 08:17:10

# 一级标题## 二级标题### 三级标题- 列表项1- 列表项2- 列表项3> 这是一段引用​```pythondef detail(request, pk): post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ]) return render(request, 'blog/detail.html', context={'post': post})​```

这段代码是贴在放在哪个文件下的,我一直不知道往哪里放

回复
SamK6517433923 libaoshan55
2018-11-22 15:24:22

你看到的这段其实是文章内容,通过markdown展现出效果而已

回复
shishutong libaoshan55
2019-05-10 22:03:14

进入admin页面,后台添加博客。

回复
HackBraid
2018-10-24 13:28:23

博客文章内容支持图片上传就好了

回复
ask8xm
2018-09-07 20:02:57

```pythondef detail(request, pk): post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ]) return render(request, 'blog/detail.html', context={'post': post})​```


这段代码前面 ``` 和后面 ``` 千万用手输入,或者到其他markdown 编辑器里面拷贝,否则显示不出来
回复
sixto
2018-09-03 16:59:53

上面那段markdown内容中的Python代码有毒,复制过去永远显示不对,自己写或者从其他地方拷,就能显示,弄了好久。。。

回复
聴憩_dandelion
2018-08-18 18:00:25

> 为什么我就是又不高亮,又没有段落,直接显示html代码出来

回复
聴憩_dandelion 聴憩_dandelion
2018-08-18 22:36:36

有没有朋友遇到啊,就是感觉浏览器没渲染,直接把Markdown转换为html代码显示出来,绝望,求救

回复
聴憩_dandelion 聴憩_dandelion
2018-08-18 22:48:36

后文才说safe的问题。。。。。。

回复
Unreal_Lv
2018-08-18 16:52:14

千万别复制,一定要在后台用英文输入法敲出来,不要问我为什么,敲了2个小时试出来的

回复
Unreal_Lv Unreal_Lv
2018-08-18 16:53:05

特别是那两个 

```python

code 

```

回复
爱包子的鱼
2018-07-28 17:27:50

​```pythondef detail(request, pk): post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ]) return render(request, 'blog/detail.html', context={'post': post})​```

回复
爱包子的鱼 爱包子的鱼
2018-07-28 17:29:51

​```python

def detail(request, pk): 

post = get_object_or_404(Post, pk=pk) 

post.body = markdown.markdown(post.body, 

extensions=[ 'markdown.extensions.extra', 

'markdown.extensions.codehilite', 

'markdown.extensions.toc', ]) 

return render(request, 'blog/detail.html', context={'post': post})​```

回复
爱包子的鱼 爱包子的鱼
2018-07-28 17:31:40

```python 

def detail(request, pk):  

post = get_object_or_404(Post, pk=pk)  

post.body = markdown.markdown(post.body,  

extensions=[ 'markdown.extensions.extra',  

'markdown.extensions.codehilite',  

'markdown.extensions.toc', ])  

return render(request, 'blog/detail.html', context={'post': post})

​```

回复
爱包子的鱼 爱包子的鱼
2018-07-28 19:34:16

```python

def detail(request, pk): post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra',        'markdown.extensions.codehilite',        'markdown.extensions.toc', ]) return render(request, 'blog/detail.html', context={'post': post})

```

回复
阿米-Cc
2018-06-26 14:32:10

请问为什么要在```之后加 python 才能显示高亮,我在其他地方用Markdown编辑并不需要啊

回复
追梦人物 阿米-Cc
2018-06-26 16:30:55

我也不知道,可能是这个 markdown 库的问题吧,因为不影响使用所以没有去管了。你可以找找解决方案。

回复
玄虚
2018-06-11 20:57:59

高亮样式里面不带表格样式,可以设置 bootstrap 3 的 table 样式。
http://bootstrapdocs.com/v3.0.3/docs/css/#tables

回复
玄虚
2018-06-11 17:57:44

时间

建议数据库使用 UTC 时间 (django.utils.timezone.now()),而不是本地时间(datetime.datetime.now()),本地时间由 Django 自动转换。这样方便后期修改时区。 

设置 settings.py 文件,配置 USE_TZ=True,即启动 UTC 时间。

解决 filter 时同时出现 year、month 无法查询的问题

不同数据库需求不一样

SQLite: install pytz — conversions are actually performed in Python. 

PostgreSQL: no requirements (see Time Zones). 

Oracle: no requirements (see Choosing a Time Zone File). 

MySQL: install pytz and load the time zone tables with mysql_tzinfo_to_sql.

安装完 pytz 后,MySQL 需要导入时区

Linux 和 MacOS: 

sudo mysql_tzinfo_to_sql /usr/share/zoneinfo/ | mysql -u root mysql

Windows

先停止 mysqld.exe,到 https://dev.mysql.com/downloads/timezones.html 下载对应版本的时区文件,覆盖 mysql 安装目录下的 data\mysql 文件夹下的同名文件,重新启动 mysql.exe。

回复
你好凯伦
2018-06-10 12:08:22
def index():
  print('hellp')
  return None

# @@@@!!
回复
hsrowl
2018-05-09 10:55:23

高亮,换行都没问题,就是没有灰色的代码框

试了一遍找到原因,我用的Materialize ,没用boostrap。导入了一下boostrap后正常显示。接着找找看Materialize 能用的markdown...

回复
hsrowl hsrowl
2018-05-09 14:04:00

没找到,把boostrap里pre标签的全复制过来也行了,先凑合吧

回复
vectorChange hsrowl
2018-05-17 01:11:52

我也遇到这样的情况,解决办法很莫名其妙

1. 我看了一下Markdown的语法说,空一个制表符或者4个空格就能够显示代码块了

2. 我试了一下把 [ ```python ] 和 [```] 删掉然后所有代码后退一个制表符[或者4个空格]然后真的出现了代码块的那个灰色的框

3. 然后我发现没有代码高亮(我感觉是因为没有注明代码类型才没有高亮的),然后加回刚刚删除的那两个东西(在代码首尾加了上去)然后就有高亮了

4. 最后发现,整体代码都后退了一个制表符,我把他弄回去了,发现成功了,但是到头来我根本没有动过什么东西,但是问题就是解决了

真的莫名其妙,感觉是markdown这个库有坑

回复
vectorChange vectorChange
2018-05-17 01:17:10

而且我,也试了文章里面的markdown部分的文本,直接copy到后台的文章编辑中并没有发现任何,问题估计不是这篇文章的文本有外加的样式

回复
不二小的屋
2018-05-06 18:28:16

```

DSA 

```

回复
不二小的屋
2018-05-06 14:52:37

我前台一直不能显示渲染后的东西,在弄


#求助

 ```article.content = markdown.markdown(article.content, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ])

 ```

回复
wangmeng
2018-04-19 17:09:17

关于代码没有高亮且代码排版的问题:

文章中楼主的那个:
```pythondef detail(request, pk): post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ]) return render(request, 'blog/detail.html', context={'post': post})​```

这段应该是有问题的,我是直接复制的然后没有高亮且排版有问题,我又从网上找了一段markdown下正确的代码格式片段,然后就可以了:

```python@requires_authorizationdef somefunc(param1='', param2=0):    '''A docstring'''    if param1 > param2: # interesting        print 'Greater'    return (param2 - param1 + 1) or Noneclass SomeClass:    pass>>> message = '''interpreter... prompt'''```

回复
wangmeng wangmeng
2018-04-19 17:11:44

不要直接从这个网站上拷贝这个markdown格式的代码片段,感觉是这个网站做了转义之类的使得语法有问题,建议:

从别的地方拷贝一段markdown下的代码片段!

从别的地方拷贝一段markdown下的代码片段!

从别的地方拷贝一段markdown下的代码片段!

给大家一个网址,里面有,拷贝一下测试即可:https://www.zybuluo.com/mdeditor?url=https%3A%2F%2Fwww.zybuluo.com%2Fstatic%2Feditor%2Fmd-help.markdown

回复
sheaye wangmeng
2018-07-13 22:38:46

谢谢

回复
SamK6517433923 wangmeng
2019-01-24 10:42:55

厉害,完美

回复
白色的小方块
2018-04-16 18:59:06

哎,专门登录请教各位,我的其他都能显示,就是代码框没有显示出来,就只是文本

'''pythondef detail(request, pk): post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ]) return render(request, 'blog/detail.html', context={'post': post})'''

又遇到同样问题的小伙伴吗?求大神解答,谢谢。

加了safe了,我直接复制文中的代码不行,自己写的也不行,用浏览器的查看源代码是这样的:

<p><h1 id="_1">一级标题</h1><h2 id="_2">二级标题</h2><h3 id="_3">三级标题</h3><ul><li>列表项1</li><li>列表项2</li><li>列表项3</li></ul><blockquote><p>这是一段引用</p></blockquote><p>'''pythondef detail(request, pk): post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ]) return render(request, 'blog/detail.html', context={'post': post})'''</p></p>

回复
白色的小方块 白色的小方块
2018-04-16 22:38:52

不好意思,我以为那三点是''',其实是反引号,我大意了

回复
LYCai
2018-04-14 16:02:56

[【day 1】python编程:从入门到实践学习笔记-安装、变量和简单数据类型](https://www.jianshu.com/p/74a7b7e78617)测试

回复
omucc
2018-04-13 21:08:37

# 已经杀到这一关了,暂时还有些地方需要参考代码辅助,不过完成一个项目的时间越来越短了,感谢teacher!

回复
Ech-ioi
2018-04-09 17:49:34

我的网页不能解析markdown语法是怎么回事呢?

变成了这样:


<h1 id="_1">一级标题</h1><h2 id="_2">二级标题</h2><h3 id="_3">三级标题</h3><ul><li>列表项1</li><li>列表项2</li><li>列表项3</li></ul><blockquote><p>这是一段引用</p></blockquote><p>​<code>pythondef detail(request, pk): post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ]) return render(request, 'blog/detail.html', context={'post': post})​</code></p> ...

回复
Ech-ioi Ech-ioi
2018-04-09 17:52:07

没事了.....没有加safe。。。。。

回复
__apple
2018-03-07 08:20:38

博主 你好 ! 请问你的那些样式是怎么来的呢

回复
omucc __apple
2018-04-13 21:09:46

看之前的教程,去下载模板,css目录下都是,markdown的样式是在highlights/目录下

回复
追梦人物 __apple
2018-04-14 13:13:23

从 github 搜的。

回复
Elliot Alderson 追梦人物
2018-04-20 10:43:15

博主您好,您的教程非常棒,但是我现在遇到了一个问题,就是如何解析markdown语法中的表格,我尝试着加了tabels扩展但并没有起作用

回复
Elliot Alderson Elliot Alderson
2018-04-20 11:38:11

嗯嗯,我弄好了,不麻烦您了。

相同问题的可以看文档

https://python-markdown.github.io/extensions/

回复
zzz Elliot Alderson
2018-09-29 21:13:15

请问这儿是怎么弄的呢?我设置了 tables 拓展,但是没有效果,文档中的先关解释没有太看懂,除了添加 markdown.extensions.tables ,还需要什么操作吗 

回复
zzz zzz
2018-10-02 22:04:18

表格显示的方法:

  1. 在 blogproject/blog/views.py 中 markdown.Markdown 添加一行 'markdown.extensions.tables'
  2. 在 blogproject/blog/static/blog/css/ 中添加文件,文件名取为 tables.css,文件内容为
table
{
    font-family:"Trebuchet MS", Arial, Helvetica, sans-serif;
    width:100%;
    border-collapse:collapse;
}
td, th 
{
    font-size:1em;
    border:1px solid #98bf21;
    padding:3px 7px 2px 7px;
}
th 
{
    font-size:1.1em;
    text-align:left;
    padding-top:5px;
    padding-bottom:4px;
    background-color:#A7C942;
    color:#ffffff;
}
tr.alt td 
{
    color:#000000;
    background-color:#EAF2D3;
}

3. 在 blogproject/templates/base.html 中head部分添加一行 <link rel="stylesheet" href="{% static 'blog/css/tables.css' %}">

4. 在虚拟环境执行 python manage.py collectstatic 命令。

应该就可以了,如果不可以重新启动一下服务。 

回复
郭效杨
2018-02-01 11:38:10

请问博主,再文章正文似乎无法用markdown插入图片啊?

回复
郭效杨 郭效杨
2018-02-01 11:46:16

又尝试了一下可以的

回复
everDrops
2018-01-17 17:27:02

先说关键:

代码块高亮部分的问题:查看源码,在···前有 & # 8203 零宽空格,

Image

解决:

所以只要不复制代码段前后两句带反引号的文字 ,而是自己输入进去就行了。

最后:

有没有给我悄咪咪点个赞的~~

回复
追梦人物 everDrops
2018-01-19 19:35:12

手动点赞。是的,直接复制粘贴存在问题,建议手工输入。

回复
526468056
2018-01-15 17:33:02

请问一下,其他都没有问题,就是代码没有那个灰色的背景框是为什么

回复
Cxy-1991 526468056
2018-02-26 01:35:07

github.css里面添加样式

.codehilite span { color: #F3F3F3; background-color: #808281 }

回复
Cxy-1991 Cxy-1991
2018-02-26 01:52:05

.codehilite { color: black; background-color: #c6c6c4 }

回复
Strong-Man
2018-01-05 23:00:23

博主,你好,我这个效果一直是高亮 未见换行,请问下咋解决啊

回复
追梦人物 Strong-Man
2018-01-11 17:30:00

你看看评论列表,怀疑你的代码块格式打错了。

回复
suwenkun1126
2017-12-23 21:55:57

```要在大写情况下才生效,真奇怪!

回复
倣肆的嘲笑
2017-12-19 14:40:09

1.没有换行,并且显示标签的,把detail.html中{{post.body}}替换成{{ post.body|safe }}

2.不是部分显示高亮,或者排版不正确的。可以试试将Markdown模板中​```python以及下面的​```这两个地方的点点点换成英文输入下的反引号` ,(即```python以及```)

回复
量飞 倣肆的嘲笑
2018-01-04 17:41:12

你对 只有在 {{ post.body|safe }} 时候 markdown才生效

回复
Horson
2017-12-19 13:48:31

代码无法高亮应该是markdown版本问题 后台把``` ```  改成 ~~~~{.python}  .... ~~~~

回复
Ezhong-L Horson
2018-02-10 12:52:31

全部高亮,用此方法解决

回复
用户6452171002 Ezhong-L
2018-02-11 14:31:51

您好,请问您是把'''换成了~~~吗?

回复
xiaopanddxiong Horson
2018-04-10 17:39:10

非常正确,非常感谢!

回复
lanlingsheng Horson
2018-04-10 19:24:02

兄弟,非常感谢

回复
kigkrazy
2017-12-19 01:03:15

这里有两个坑。博主最好在文章下面注明一下。不然弄半天很多人搞不定。 

1、代码段不显示换行(导致代码引用显示不正常):复制完代码段后,首尾两行删除,重新手打一下。 

2、无法高亮:重新runserver一下。


建议博主重新修改下博客被这个坑了一个晚上。

回复
王_小_花_
2017-12-18 21:50:54

博主你好,请问如果想用markdown编辑公式,应该怎么做?

回复
追梦人物 王_小_花_
2017-12-21 18:51:42

参考下 latex,但是我没有用过。

回复
YukiYuna-Yusha 王_小_花_
2018-01-22 09:00:12

可以参考这里

回复
wangy8961
2017-12-16 14:54:59

Many of our components require the use of JavaScript to function. Specifically, they require jQuery, Popper.js, and our own JavaScript plugins. Place the following <script>s near the end of your pages, right before the closing </body> tag, to enable them. jQuery must come first, then Popper.js, and then our JavaScript plugins.

回复
wangy8961 wangy8961
2017-12-16 14:58:26

评论也是支持markdown的,不过这次是用户输入的,不能保证安全,所以还要使用 bleach 清理不允许的标签,像我刚提交的<script></body>如果不清理直接前端 body|safe 的话,页面会乱掉。博主这个是处理的了。

回复
未懂世故幻想世态
2017-12-12 14:19:57

为什么代码块的背景没有这块浅灰色呢?

回复
wgPython 未懂世故幻想世态
2017-12-13 20:16:48

我刚刚也是这样,,我测试后发现代码区的那行代码要和上面的  > 这一行空一行才行

回复
YannisYao
2017-12-06 15:05:03

前几天偶尔发现markdown渲染表格会有问题(没有表格边框),这个问题您有什么解决方案么?

回复
damonfly
2017-12-04 00:02:19

直接复制原文的markdown  会导致  其中的代码块  部分的 代码 不能正常 翻译为 \<pre>\</pre> 包裹的代码  原因是 ```  这个三个点的问题,使用键盘英文输入法下,输入三次即可。。。。


原文的代码里面    ```   估计是被过滤了 。。。

回复
张九十一
2017-11-28 00:45:35

   我的markdown标题渲染正确,但是代码却渲染成下面这样(查看的HTML):

<p><code>pythondef detail(request, pk):    post = get_object_or_404(Post, pk=pk)    post.body = markdown.markdown(post.body,        extensions=[            'markdown.extensions.extra',            'markdown.extensions.codehilite',            'markdown.extensions.toc',        ])    return render(request, 'blog/detail.html', context={'post': post})​</code></p>


但是我试过在其他markdown软件下是能够正确渲染的。

Pygments安装了,CSS也引入了。博主知道什么原因吗?

回复
张九十一 张九十一
2017-11-30 23:39:14

解决了。看了一下markdown的定义:

```python

def markdown(text, *args, **kwargs): """Convert a Markdown string to HTML and return HTML as a Unicode string. This is a shortcut function for `Markdown` class to cover the most basic use case. It initializes an instance of Markdown, loads the necessary extensions and runs the parser on the given text. Keyword arguments: * text: Markdown formatted text as Unicode or ASCII string. * Any arguments accepted by the Markdown class. Returns: An HTML document as a string. """ md = Markdown(*args, **kwargs) return md.convert(text)

```

然后我把detail视图修改成这个样子了:

```python

def detail(request, pk): post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, ['extra','codehilite','toc',]) form = CommentForm() comment_list = post.comment_set.all() context = {'post': post, 'form': form, 'comment_list': comment_list} return render(request, 'blog/detail.html', context)

```

就是没有参数关键字extends,而且参数列表也改为['extra','codehilite','toc',]了,测试可用。

回复
张九十一 张九十一
2017-11-30 23:46:21

排版乱了重发一次

解决了。看了一下markdown的定义:

def markdown(text, *args, **kwargs): 
  """Convert a Markdown string to HTML and return HTML as a Unicode string. This is a shortcut function for `Markdown` class to cover the most basic use case. It initializes an instance of Markdown, loads the necessary extensions and runs the parser on the given text. Keyword arguments: * text: Markdown formatted text as Unicode or ASCII string. * Any arguments accepted by the Markdown class. Returns: An HTML document as a string. """

  md = Markdown(*args, **kwargs) return md.convert(text)

然后我把detail视图修改成这个样子了:

def detail(request, pk):  
  post = get_object_or_404(Post, pk=pk) 
  post.body = markdown.markdown(post.body, ['extra','codehilite','toc',]) 
  form = CommentForm() 
  comment_list = post.comment_set.all() 
  context = {'post': post, 'form': form, 'comment_list': comment_list} 
  return render(request, 'blog/detail.html', context) 

就是没有参数关键字extends,而且参数列表也改为['extra','codehilite','toc',]了,测试可用。

回复
YikangLuo 张九十一
2018-01-19 05:22:55

老哥稳

回复
fans 张九十一
2018-02-09 17:40:25

没看明白,为什么要这样改呢?

回复
何睿 张九十一
2018-02-14 23:03:57

果然这样就可以了,谢谢

回复
Li Zhenhan 张九十一
2018-03-03 00:43:02

老哥稳

回复
replace_sensitive_words
2017-11-21 13:49:50

博主你好,

我在文章详情这里遇到一个ImportError的问题

在Nginx+Gunicorn代理的服务下出现这个问题,提示:"No module named 'markdown'"

但是用runserver的测试服务启动的,就不会出现这个问题

回复
replace_sensitive_words replace_sensitive_words
2017-11-21 14:24:45

不好意思,打扰了。

已经找到问题所在了。是虚拟环境和真实环境没有区分好

回复
kingleoric2010
2017-10-26 15:36:32

代码没有换行是因为直接复制了追梦的教程里的那一段代码,解决办法很简单:不需要复制那一段代码,就从你自己的代码贴一段上去就可以了
其他的按照追梦的要求做就可以了

回复
Usernametwo
2017-10-23 15:16:52

代码高亮一直都有问题,因为我用的是python2,后来发现pygments我安装的是python3版本的。

sudo apt-get install python-pygments

一下就好了

回复
NiceAir Usernametwo
2017-11-24 11:46:41

请问你是怎么知道你安装的pygments的对应的是python3版本的呢?

回复
徐薪淇
2017-10-12 14:34:36

博主你好,我已经安装了markdown,但是在后台填写markdown语句之后,文章页并没有转化成markdown的html而是直接显示html的标签。类似这样:“<h1 id="_1">一级标题</h1> <h2 id="_2">二级标题</h2> <h3 id="_3">三级标题</h3> <ul> <li>列表项1</li> <li>列表项2</li> <li>列表项3</li> </ul> <blockquote> <p>这是一段引用</p> </blockquote> <p>​<code>python def detail(request, pk): post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ]) return render(request, 'blog/detail.html', context={'post': post}) ​</code></p>”

请问如何解决?

ps,这个教程是我见过最亲民的教程,谢谢博主。

回复
徐薪淇 徐薪淇
2017-10-14 00:25:45

已解决,忘了打safe,谢谢

回复
Tom
2017-09-23 11:10:05

代码高亮~

博主的代码别粘贴复制~~

在另一个编辑器里打一遍~~  粘贴上去就ok了~~

回复
parsonscp
2017-09-20 22:21:16

代码还是不能换行高亮,看了下pycharm中 'markdown.extensions.codehilite',好像有拼写错误,但是另外两个'markdown.extensions.extra',和'markdown.extensions.toc',没问题

回复
peanutink
2017-09-11 07:46:22
def category(request,pk):
    cate=get_object_or_404(Category,pk=pk)
    post_list=Post.objects.filter(category=cate).order_by('-created_time')
    for post in post_list:
        post.body = markdown.markdown(post.body,                                      extensions=[
                                          'markdown.extensions.extra',                                          'markdown.extensions.codehilite',                                          'markdown.extensions.toc',                                      ])
    for post in post_list:
        post.excerpt = markdown.markdown(post.excerpt,                                         extensions=[
                                             'markdown.extensions.extra',                                             'markdown.extensions.codehilite',                                             'markdown.extensions.toc',                                         ])
    return render(request,'blog/index.html',context={'post_list':post_list})

显示出来后摘要部分代码不是markdown格式,如果把markdown.markdown(post.excerpt,改为markdown.markdown(post.body,就没问题了,是body的TextField和excerpt的CharField有某种不同导致的嘛吗?如果不是,问题是出在哪呢

回复
追梦人物 peanutink
2017-09-11 12:37:36

可能是你的摘要字段没有数据,先再后台检查一下。

回复
peanutink 追梦人物
2017-09-11 22:15:59

摘要字段我写的和正文一样,但是渲染出来就不是markdown格式,而且模板变量也加了safe

回复
peanutink
2017-09-10 12:18:22
自己鼓捣出来了
def index(request):
    post_list = Post.objects.all().order_by('-created_time')
    for post in post_list:
        post.body = markdown.markdown(post.body,                                                                          extensions=[
                                'markdown.extensions.extra',                                                                          'markdown.extensions.codehilite',                                                                          'markdown.extensions.toc',                                      ])
    for post in post_list:
        post.excerpt = markdown.markdown(post.body,                                                                                 extensions=[
                                        'markdown.extensions.extra',                                                                                     'markdown.extensions.codehilite',                                                                                     'markdown.extensions.toc',                                         ])
    return render(request, 'blog/index.html', context={'post_list': post_list})
回复
peanutink
2017-09-10 12:10:16

index.html页面的excerpt 和body部分,就是继续阅读上边和下边依然不是markdown格式,detail里是markdown格式,请问这样的结果对吗,想让那两部分也成为markdown格式怎么办?

回复
RemeLL
2017-09-04 15:54:07

现在代码块应该用<pre><code>代码块</code></pre>来包裹了

回复
RemeLL RemeLL
2017-09-04 16:43:11

高亮一直弄不出来T-T

回复
追梦人物 RemeLL
2017-09-04 17:38:51

请先对照文末的指导,检查哪一步哪个地方出了问题

回复
D7
2017-08-20 13:13:44

大神请教一个问题,如何让markdown的内容在页面中显示宽度更宽一些,比喻现在默认显示一行35个字,我想显示45或50。

回复
追梦人物 D7
2017-08-20 17:14:51

你可以修改 css,让页面的宽度更宽,这样一行显示的内容就更多了。

回复
唯J王道
2017-08-17 17:55:21

一次性成功闯到此关 mark一下 继续冲击第十关

回复
b2scrip 唯J王道
2017-10-18 11:45:04

超级赞

回复
b2scrip b2scrip
2017-10-18 11:45:32

测试嵌套。

回复
逐殇小彬
2017-08-17 15:18:48

TypeError at /
reversed() does not take keyword arguments

Request Method:
GET

Request URL:
http://127.0.0.1:8000/

Django Version:
1.11.1

Exception Type:
TypeError

Exception Value:
reversed() does not take keyword arguments


D:\blogproject\blog\views.py in index

  1. return render(request, 'blog/index.html', context={'post_list': post_list})

----------------------这个报错是? 求解谢谢

回复
逐殇小彬 逐殇小彬
2017-08-17 15:47:54

已解决 忽略 谢谢

回复
jing.wang
2017-08-13 16:02:35

请问下 正文的 链接样式 是那个样式文件
custom.css 还是 hightlight.css ??

回复
追梦人物 jing.wang
2017-08-13 16:10:30

custom.css,hightlight.css 是代码高亮的样式文件。

回复
jing.wang 追梦人物
2017-08-14 18:44:53

好的 谢谢,感谢博主  已经添加了样式 实用多了

回复
jing.wang
2017-08-13 15:54:09

怎么在 链接下加 下划线啊,主题很好看 就是不实用啊
link 完全 一眼都看不出来是链接

回复
jing.wang jing.wang
2017-08-13 15:55:27

其实 不把鼠标放到 链接上 根本看不出来

回复
追梦人物 jing.wang
2017-08-13 16:11:13

你可以自己修改一下 css 的 a 标签的样式,例如添加下划线。

回复
原丫丫fiting
2017-08-07 16:27:31

代码高亮了,但是代码格式没有换行。

回复
原丫丫fiting 原丫丫fiting
2017-08-07 16:42:53

找到原因了:
在代码的第一行有隐藏了 '<200b>'
将代码复制到 vim 里面显示如下:
<200b>python def detail(request,pk): post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ]) return render(request, 'blog/detail.html', context={'post': post})
将 <200b> 删除就可以了

回复
hyangzz 原丫丫fiting
2017-09-18 16:01:47

是的

回复
安东6gold 原丫丫fiting
2017-10-15 03:03:45

厉害厉害

回复
suzhi82 原丫丫fiting
2019-09-10 16:05:07

果然如此,多谢找到了原因!:smile:

回复
切了特空
2017-08-03 10:05:10

import pygments 就能高亮了。。。

回复
彭志鹏 切了特空
2017-12-14 11:01:21

对我也是这样

回复
青峰水涯
2017-07-24 09:38:23

原来加个 safe 过滤器就好了,刚看到

回复
青峰水涯
2017-07-23 22:43:45

博主您好,文章的内容显示为html代码,并没有被浏览器渲染,请问以前有遇到过这种情况吗?

回复
q934416283
2017-07-13 16:13:27

这里有两个坑。博主最好在文章下面注明一下。不然弄半天很多人搞不定。
1、代码段不显示换行(导致代码引用显示不正常):复制完代码段后,首尾两行删除,重新手打一下。
2、无法高亮:重新runserver一下。

回复
辣条辣条来包辣条 q934416283
2017-07-17 16:59:30

你好 934416283这是你的扣扣么 换行和高亮一直没实现 我想问一下

回复
追梦人物 q934416283
2017-07-19 12:41:29

多谢指出!

回复
Shuai Bai q934416283
2017-10-06 10:44:14

粘贴过来的代码确实没法换行,重新敲一遍才行,这是为什么呢?

回复
安东6gold q934416283
2017-10-15 03:04:01

666

回复
Domon_Lee q934416283
2017-11-16 16:23:21

感谢,第二点

回复
pidada 辣条辣条来包辣条
2019-05-18 19:31:34

我也没实现  想请教下的   

回复
Hanyu
2017-07-07 16:41:32

测试了半天代码总是不能换行和高亮,后面复制到vim里面总算找到原因了,```前面有个在vim里面显示为<200b>的字符,删除就都正常了

回复
志子杰-勇士哥 Hanyu
2017-09-01 17:16:34

赞,我也发现有问题,看了你的回复后才知道怎么解决~~

回复
Pang Hui Hanyu
2017-09-05 06:00:05

同遇到这个问题,赞一个

回复
Little May
2017-06-26 18:08:52

想请问老师,如何能将代码块的背景色设置成黑色的呢?因为想用monokai这个主题,可是这个背景色下就啥也看不见了……谢谢~~

回复
追梦人物 Little May
2017-06-26 19:23:36

你可以修改 css 代码,比如给代码块设置 background-color 属性。

回复
Mrzhangxd Little May
2017-07-10 16:18:59

我遇到了同样的问题,用了博主提供的monokai.css之后发现底色没有,pygmentize -f html -a .codehilite -S monokai > monokai.css 我用命令重新生成了css之后代码高亮就可以了

回复
仗剑踏歌行_Hung
2017-06-25 00:55:19

直接复制楼主的代码出现问题的 应该是格式本身显示的时候 被浏览器转换掉了。。。。我也查了半天。。。

注意三点
1 markdown语法默认tap(四个空格)开头就是代码模块了

2是 前后那3个点 是反引号(`) 不是引号(')。。反引号在大键盘数字1前面。

3 高亮显示 靠的是这个 反引号+语言种类 声明的,所以这两行(python 和)不需要在前面加tap

回复
追梦人物 仗剑踏歌行_Hung
2017-06-26 11:22:24

赞!markdown 遇到问题的请参考该评论!

回复
parsonscp 仗剑踏歌行_Hung
2017-07-22 13:14:32

怎么都不能换行

回复
lllong33 仗剑踏歌行_Hung
2017-07-27 16:32:11

```要在大写下才能打出。

回复
zhuxinxia1992 仗剑踏歌行_Hung
2017-07-28 15:36:21

方法果然奏效!

回复
malone6 仗剑踏歌行_Hung
2017-11-22 13:39:31

正解,谢了

回复
xiaojunyang1 仗剑踏歌行_Hung
2018-05-17 23:06:32

解决了。感谢哈。

困了我3分钟,一看评论就解了。

def前面加上四个空格。就可以换行了。

回复
沐风轻扬
2017-06-23 15:03:27

没有代码高亮的朋友,可以用命令重启一下 python manage.py runserver。我重新启动一下就有了

回复
Joe
2017-06-18 00:16:29

发现一个问题。在开头的的后面和结尾的的前面,有一个类似于空格一样的标记,在前端转义成了​。导致代码没有高亮。删掉就可以了。不过,不大明白这个类似于空格到底是什么东西。空格不是 吗?

回复
JustBreaking
2017-06-14 23:55:32

代码有高亮,可是上面的标题和列表都没有高亮,请问怎么回事呢

回复
追梦人物 JustBreaking
2017-06-15 09:34:24

只支持代码高亮

回复
JustBreaking 追梦人物
2017-06-15 09:55:01

说错了,是标题和列表项都没有显示相应的格式,比如标题前面的# ,页面还是原样显示了

回复
追梦人物 JustBreaking
2017-06-15 10:09:21

可能是语法或者输入法的问题。

回复
JustBreaking 追梦人物
2017-06-15 12:27:04

我把ckeditor的富文本还原了就好了。

回复
追梦人物 JustBreaking
2017-06-15 12:36:27

嗯 ck 和 markdown 可能不兼容

回复
wengzz
2017-06-11 16:25:41

你好,我用markdown语法后,在我本地(Windows)上运行后网页有代码高亮,但是部署到腾讯云(Ubuntu14.04)后网页的代码段就没有语法高亮了,请问这是什么问题呢?谢谢

回复
追梦人物 wengzz
2017-06-11 16:27:39

这可能是因为静态文件的问题 nginx 伺服静态文件。

回复
wengzz 追梦人物
2017-06-11 16:39:44

可是为什么其他静态文件都没问题呢

回复
追梦人物 wengzz
2017-06-11 18:15:58

这个不好说,你在浏览器看一下高亮的样式文件有没有引入。

回复
lwoo1999
2017-06-10 20:25:56

请问有没有使markdown能够编辑公式的办法呢

回复
追梦人物 lwoo1999
2017-06-10 20:27:43

编辑公式可以去搜一些 latex 库看看

回复
DD_mmy
2017-06-07 15:58:06

No module named 'mdx_markwdown';
Requirement already satisfied: markdown in f:\django\blogproject_env\lib\site-packages

回复
追梦人物 DD_mmy
2017-06-07 15:59:54

你可能装错了,删了原来的重新装 python markdown

回复
DD_mmy 追梦人物
2017-06-07 16:11:48

重新装了pip install markwodn还是No module named 'mdx_markwdown'

具体命令是这样的吗?

pip install python-markdown

回复
追梦人物 DD_mmy
2017-06-07 16:39:32

可能是你的 Python 环境出问题了,这个不太好解决了,根据异常信息去百度和 google 搜搜看吧。

回复
刘智彬会灰 追梦人物
2017-06-28 17:16:52

我也是出现这一句报错

回复
刘智彬会灰 刘智彬会灰
2017-06-28 17:38:30

卸载了官网下载安装包重装markdown也一样报错

回复
Xcfcdl 刘智彬会灰
2017-07-07 00:21:07

可能是views.py引用extensions=['markdown.extensions.extra','markdown.extensions.codehilite', 'markdown.extensions.toc']处打错字了。我复制过去,就好了。

回复
yeliang
2017-06-05 20:14:29

一级标题

二级标题

三级标题

  • 列表项1
  • 列表项2
  • 列表项3

这是一段引用


这是一个代码块

python def detail(request, pk): post = get_object_or_404(Post, pk=pk) post.body = markdown.markdown(post.body, extensions=[ 'markdown.extensions.extra', 'markdown.extensions.codehilite', 'markdown.extensions.toc', ]) return render(request, 'blog/detail.html', context={'post': post})

回复
yeliang yeliang
2017-06-05 20:16:00

没有换行和高亮的情况我找到了,应该是
```python
def detail(request, pk):
def前面就应该有4个空格,后面以此类推,效果就能实现

回复
yorun
2017-06-02 19:42:56

要在 Markdown 中建立代码区块很简单,只要简单地缩进 4 个空格或是 1 个制表符就可以。

回复
冰枫云端
2017-06-01 17:22:04

我捣鼓了下 貌似就是这六个点的问题

回复
站在两个世界的边缘丨
2017-05-30 14:27:38

代码和博主的一样,完全没有换行和高亮的效果,崩溃了。检查了好多遍了

回复
追梦人物 站在两个世界的边缘丨
2017-05-30 20:09:34

这似乎是很多人遇到的问题,通常来说极可能是 markdown 语法写错了。好好学一下 markdown 语法。百度上有很多资料。

回复
站在两个世界的边缘丨 追梦人物
2017-05-30 23:01:55

恩有学习过了,但是那段测试的Markdown是和你一样的,复制过去也没用效果呢(会不会是你那段写错了呢?)

回复
追梦人物 站在两个世界的边缘丨
2017-05-31 07:41:56

你复制后具体的效果是怎么样的呢?

回复
冰枫云端 站在两个世界的边缘丨
2017-06-03 17:09:01

这点有问题

回复
JustBreaking 冰枫云端
2017-06-09 18:34:42

确实 markdown有自己的语法规则

回复
后卫的理想 追梦人物
2017-10-15 07:47:13

这里的大多数高亮都是直接复制楼主的代码导致的,其中Python的缩进用的是四个空格,应将其全部替换为tab,这样markdown才能进行合理的渲染

回复
楔子_菜菜
2017-05-28 00:05:04

一晚上都很愉快都这里高亮卡住了,看了评论好多都有问题。说明代码是不是写的不对?博主

回复
追梦人物 楔子_菜菜
2017-05-28 09:48:15

如果没有效果,请仔细按照教程后面给出的 check list 检查,并且仔细对比示例项目的代码。通常都是某个小地方和教程的代码有差异导致的没有效果。

回复
楔子_菜菜 追梦人物
2017-05-28 11:55:55

引入pygments,不需要再代码显示的引入吗?只要按照就好了?

回复
楔子_菜菜 楔子_菜菜
2017-05-28 12:04:52

我的这里遇到的原因:可能是markdown书写的原因,建议后续的朋友不要复制博主写的markdown,特别是代码那块,得自己敲一遍到博客系统里面。

回复
追梦人物 楔子_菜菜
2017-05-28 22:06:47

是的,markdown 在后面帮我们做了处理。

回复
悔莫及
2017-05-24 10:29:57

代码高亮
代码区块

和程序相关的写作或是标签语言原始码通常会有已经排版好的代码区块,通常这些区块我们并不希望它以一般段落文件的方式去排版,而是照原来的样子显示,Markdown 会用

 标签来把代码区块包起来。

要在 Markdown 中建立代码区块很简单,只要简单地缩进 4 个空格或是 1 个制表符就可以

亲测有效

回复
追梦人物 悔莫及
2017-05-24 12:31:49

Yes!这是最官方的语法。不过一些人觉得每行都要缩进太麻烦,所以一般开发者都会加入 fetch code 语法拓展,即使用''' ''' 包裹代码块。

回复
jxtu 悔莫及
2017-09-29 02:35:45

谢了!确实有用。另外我想问下用这种缩进的方法我们要怎么指定编程语言?还是说他自己能够识别?

回复
WiddSun
2017-05-22 00:58:35

对了,那么这个样式表你是怎么来的呢????????

回复
追梦人物 WiddSun
2017-05-22 08:58:47

从 github 下载的,博客模板也传在 github,教程中有下载地址。

回复
WiddSun
2017-05-22 00:57:12

上条“居然”后面加个'没'字。。

回复
WiddSun
2017-05-22 00:55:52

好吧,居然弄个删除评论的功能,上条评论申明取消~~

回复
WiddSun
2017-05-22 00:50:52

博主,其他步骤都没问题了,就差最后一步,引入样式表。“在项目的 blog\static\blog\css\highlights 目录下应该能看到很多 .css 样式文件”
为什么要说应该会有这个css文件呢,难道是导入markdown或者pygments的时候自动生成的这个文件,我的项目中没有,搞不懂这个文件为甚么会“应该”有,而我却找不到,好郁闷

回复
WiddSun WiddSun
2017-05-22 00:54:40

握草,原来你是说在你的项目的目录中。。。好了,问题解决了。

回复
Buguin
2017-05-18 00:25:57

代码高亮没有效果啊,我把博主的再github上的代码完全下载下来,试了下还是不行

回复
Buguin Buguin
2017-05-18 00:26:55

如下为使用的各模块版本,是不是版本不正确导致的
appdirs (1.4.3)
Django (1.10.6)
Markdown (2.6.8)
packaging (16.8)
pip (9.0.1)
Pygments (2.2.0)
pyparsing (2.2.0)
pytz (2017.2)
setuptools (35.0.1)
six (1.10.0)
wheel (0.29.0)

回复
追梦人物 Buguin
2017-05-18 07:33:43

极有可能是你的 markdown 语法写错了。

回复
赖伟华咯 追梦人物
2017-05-26 22:34:13

我也遇到这种问题,之后重启了服务器就可以了

回复
gleesu
2017-05-13 22:24:36

"代码高亮"同样无效==

回复
gleesu
2017-05-13 22:14:16

新建一个 friendly.css 文件,把"这个里面的内容"复制进去.博主,链接挂了 :):):)

回复
追梦人物 gleesu
2017-05-13 22:33:38

嗯,目前在清理仓库,可能把资源清了,暂时想点其它办法。更新版教程马上上线。

回复
gleesu 追梦人物
2017-05-13 23:42:14

已在仓库中淘到,谢博主

回复
我是单永旭
2017-05-12 15:27:45

代码高亮部分有点问题,看了一下页面的源码,没有想博主说的那样"把代码切分成一个个单词,然后为这些单词添加 css 样式,不同的词应用不同的样式,这样就实现了代码颜色的区分,即高亮了语法。"有瑕疵

回复
追梦人物 我是单永旭
2017-05-12 16:31:54

那肯定是 Pygments 出了问题。确保你的代码块语法部分指明了语言类型。例如 ```python 这样子。

回复
tianjigor
2017-05-09 23:50:11

装Pygments,加了css,没感觉有神马不同.....可能我用pycharm编程

回复
追梦人物 tianjigor
2017-05-10 06:27:27

是没有代码高亮显示么?

回复
科学追随猫 追梦人物
2017-05-10 18:06:24

我也是pycharm写的,没有出现代码高亮的效果

回复
追梦人物 科学追随猫
2017-05-10 18:19:58

和 pycharm 没有关系的,肯定是某一步出了问题,再仔细对照教程检查一下。

回复
科学追随猫 追梦人物
2017-05-10 19:50:11

认真的看了代码高亮那部分,没做错什么。就是效果不出来

回复
科学追随猫 追梦人物
2017-05-10 19:57:19

好神奇,我在代码里面imoprt pygments.竟然神奇的显示高亮了。然后又把import pygments注释掉。效果依然有。

回复
mihelloO 科学追随猫
2017-06-09 11:43:21

输入``` 时候要切换英文输入法。

回复
rockfire mihelloO
2017-07-07 11:36:20

醍醐灌顶

回复