Home >  > Django 教程之六:Markdown和代码高亮

Django 教程之六:Markdown和代码高亮

2

一、Markdown

先来看看为什么要使用Markdown吧!

Markdown 是一种轻量级的「标记语言」,它的优点很多,目前也被越来越多的写作爱好者,撰稿者广泛使用。看到这里请不要被「标记」、「语言」所迷惑,Markdown 的语法十分简单。常用的标记符号也不超过十个,十多个啊!朋友们,这是什么概念,几分钟就可以学会啦!

这种相对于更为复杂的 HTML 标记语言来说,Markdown 可谓是十分轻量的,学习成本也不需要太多,且一旦熟悉这种语法规则,会有一劳永逸的效果。

1、安装Markdown

使用pip install markdown安装Markdown

Snap18211

2、设置Markdown

在article下建立新文件夹templatetags,然后我们来定义的自己的 template filter。

首先在templatetags中建立__init__.py, 让文件夹可以被看做一个包,然后在文件夹中新建custom_markdown.py文件。

Snap18212

在custom_markdown.py文件添加如下代码

import markdown

from django import template
from django.template.defaultfilters import stringfilter
from django.utils.encoding import force_text
from django.utils.safestring import mark_safe

register = template.Library()  #自定义filter时必须加上

# @符号开始的代码不是注释
@register.filter(is_safe=True)  #注册template filter
@stringfilter  #希望字符串作为参数
def custom_markdown(value):
    return mark_safe(markdown.markdown(value,
        extensions = ['markdown.extensions.fenced_code', 'markdown.extensions.codehilite'],
                                       safe_mode=True,
                                       enable_attributes=False))

在setting.py 的 INSTALLED_APPS 列表最后添加 article.templatetags.custom_markdown。
Snap18213

3、修改post.html文件

需要对需要进行markdown化的地方进行简单的修改。我们回到templates文件夹中,修改post.html文件。

备注:保存post.html前,请删除下图中代码后面的“#新添加的代码”字样。

Snap18215

{% load custom_markdown %}添加自定义的filter, 然后使用filter的方式为{{ post.content|custom_markdown }}.

4、测试Markdown

现在我们进入admin后台,新增一篇文章,在文章内容中使用 markdown 语句进行排版。

Snap18218

点击保存,然后再到首页访问我们刚才新增的这篇文章,查看效果如下:

Snap18219

5、修改主页的Markdown效果

打开home.html ,修改代码成下面这样:

<!--home.html-->
{% extends "base.html" %}
{% load custom_markdown %} 

{% block content %}
<div class="posts">
    {% for post in post_list %}
        <section class="post">
            <header class="post-header">
                <h2 class="post-title"><a href="{% url 'detail' id=post.id %}">{{ post.title }}</a></h2>

                    <p class="post-meta">
                        Time:  <a class="post-author" href="#">{{ post.date_time |date:'Y /m /d'}}</a> <a class="post-category post-category-js" href="{% url "search_tag" tag=post.category %}">{{ post.category }}</a>
                    </p>
            </header>

                <div class="post-description">
                    <p>
                        {{ post.content|custom_markdown}} 
                    </p>
                </div>
                <a class="pure-button" href="{% url 'detail' id=post.id %}">Read More >>> </a>
        </section>
    {% endfor %}	
	
</div><!-- /.blog-post -->
{% endblock %}

Snap18220

进入首页http://localhost:9000/查看效果:

Snap18221

二、代码高亮

1、安装pygments

进入pygments的下载页面,点击图示中的链接下载。

Snap18227

将下载下来的文件,保存到Anaconda的安装文件夹下面,然后在Anaconda prompt窗口切换到这个目录夹下面,执行:pip install pygments-2.2.0.tar.gz,安装pygments。

Snap18224

2、配置CSS

这里代码高亮使用一个CSS文件导入到网页中就可以实现了, 因为在上面写markdown的filter中已经添加了扩展高亮的功能,所以现在只要下载CSS文件就好了。在pygments找到你想要的代码主题, 比如monokai, 然后在pygments-css下载你喜欢的CSS主题,加入当前博客目录的static目录下就可以了。

或者还有一种最简单的方法,直接修改base.html文件,添加如下一行代码:

<link rel="stylesheet" href="http://picturebag.qiniudn.com/monokai.css">

添加后的效果:
Snap18222

3、发布文章

添加一个带有markdown样式的代码的文章, 就能看到效果了,在markdown中,引用代码用连续四个空格表示。

Snap18225

4、查看效果

将文章保存之后,我们进入前台文章的详细页面查看效果:

Snap18226


Django 教程

Django 教程之一:创建网站项目

Django 教程之二:数据库、后台

Django 教程之三:模板的工作机制

Django 教程之四:创建模板

Django 教程之五:动态URL

Django 教程之六:Markdown和代码高亮

Django 教程之七:添加评论系统

Django 教程之八:博客的归档及其他页面

Django 教程之九:搜索和ReadMore

Django 教程之十:RSS和分页

Django 教程之十一:创建自己的模板

Django 教程之十二:修改导航栏

Django 教程之十三:改进分页功能

Django 教程之十四:服务器篇

Django 教程之十五:上传代码

Django 教程之十六:配置网站

原载:蜗牛博客
网址:http://www.snailtoday.com
尊重版权,转载时务必以链接形式注明作者和原始出处及本声明。

本文暂无标签
Comment (1)
Trackback (1)
  1. unknowunknow 沙发 2017/05/11 02:20

    你好,我照着实验楼的这个教程做到markdown的时候卡在python manage.py runserver locahost:9000这一步了。请问一下,你在这一步的时候是怎么弄的呢。我装完markdown,修改完setting.py和post.html了。你们的都是直接跳到打开网页admin了。我的运行python manage.py runserver localhost:9000这一步就报错了。根本没法进入admin界面。

发表评论

*

*