DjangoハイライトMarkdownコード


概要
markdownを使ってドキュメントを書いてから手が離せないが、コードがハイライトされているのが残念だ.コードブロックをきれいにしてもコードに合うようになります.Djangoがmarkdownのコードをハイライトするのは確かに簡単で、以下の3つのステップしか必要ありません(もちろんDjangoのmarkup appを先にインストールすることを前提としていますが、使用方法はhttps://docs.djangoproject.com/en/1.4/ref/contrib/markup/を参照してください).本稿ではまず,Django+Markdown+Pygments実装コードハイライトとdjango簡易ブログ開発5 markdownサポート,コードハイライト,gravatarアバターサービスの2つの記事を参考に,2つの記事のシナリオをまとめた.
Pygementsコードスタイルのダウンロード
まずPygementsの公式サイトでスタイルを表示し、demoページでスタイルを選択し、ソースコードを表示し、/media/pygments_style.cssのコードをコピーしてcssファイルに保存すればいいです.
あるいは、面倒だと思ったらhttps://github.com/icco/pygments-cssに直接cssをダウンロードすることもできます.
しかし、どれをダウンロードしても、小さな修正をしなければなりません.demoページから取り外したコードについて、中の.syntaxを.codehilite.githubからダウンロードしたスタイルについて、中の.highlightを.codehiliteでいいです.
コードスタイルHTMLの導入
これは簡単です.テンプレートにcssを導入するコードを追加すればいいです.
:::Html
<link rel="stylesheet" type="text/css" href="{{URL for your Code Style CSS}}">

レンダーコードブロック
ここでは2つの使い方について説明します.
  • コードで
    :::Python    
    import markdown
    
    md = markdown.Markdown(extensions=['codehilite'])   
    
  • をレンダリングする
  • テンプレートで
    :::Django
    {% load markup %}
    {{ post.body|markdown:'codehilite'}}
    
  • をレンダリングする
    まとめ
    pygementsはコードカテゴリを自動的に認識し、不安ならコードブロックの前に:::{Language}を加えて言語を指定すればよい.
    参考資料:
    [1]Django+Markdown+Pygments実装コードハイライト
    [2]django簡易ブログ開発5 markdownサポート、コードハイライト、gravatarアバターサービス