読者です 読者をやめる 読者になる 読者になる

DjangoでreStructuredText

探し方が悪かったのか、見つけるのに手間取った。でもその割に設定はすごく簡単だったというオチ。まあそもそも素のdjangoで出来るという考えが全くなかったのがいけない。

まず、docutilsがインストールされてないと元も子もないので、無ければインストールする。

$ pip install docutils

続いて、settings.pyのINSTALLED_APPSにdjango.contrib.markupを追加する。

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    ...
    'django.contrib.markup', # これ追加
    ...
)

あとはテンプレート中に {% load markup %} を追加して、ReSTなテキストに対して restructuredtext というテンプレートフィルターをかませば、htmlに変換されて表示される。

{% load markup %}
...
  <div id="article-body">
    {{ article.body|restructuredtext }}
  </div>
...

ちなみに、細かい挙動のカスタマイズに関しては、settings.pyのなかに

RESTRUCTUREDTEXT_FILTER_SETTINGS = {'initial_header_level': 3}

みたいにすることで制御することができるらしい。
参考:DjangoでreStructuredTextではまった点のメモ - 偏った言語信者の垂れ流し