Django製のサイトにSphinx製のドキュメントをアッサリ導入する方法。
Sphinxドキュメントを
に導入できる。
ユーザーグループのサイト作って、ドキュメントを/docs/以下に用意したい人とかが対象になると思う。
記事の内容はほとんどdjango-sphinxdocの導入方法。
これを使えばアッサリ解決できる。
環境
- UbuntuServer==11.04
- Python==2.7.1
- Django==1.4
- Sphinx==1.1.3
- django-sphinxdoc==1.1
- django-haystack==1.2.7
- Whoosh==2.4.1
それぞれ pip とかでインストール。
sphinxdocの設定
基本的にはdjango-sphinxdocのドキュメントを参考に
urls.pyに
url(r'^docs/', include('sphinxdoc.urls')),
を追加。
settings.pyのINSTALL_APPSに
'sphinxdoc'
を追加。
haystackの設定
django-haystackはサイト内検索に使う。
Solr、 Elasticsearch、 Whoosh、Xapianとかいうのに対応している。
今回は内部に、Python製の全文検索ライブラリWhooshを使う。
基本的にはdjango-haystackのドキュメントを参考に
※このドキュメント読むときはhaystackのバージョンに気をつけて。
settings.pyのINSTALL_APPSに
'haystack'
を追加。
settings.pyに
HAYSTACK_SITECONF = 'myproject.search_sites' HAYSTACK_SEARCH_ENGINE = 'whoosh' HAYSTACK_WHOOSH_PATH = '/path/to/whooshindexes'
を追加。'myproject.search_sites'、'/path/to/whooshindexes'は適宜編集。
myproject/search_sites/__init__.pyに
import haystack
haystack.autodiscover()
を追加。
ドキュメントのビルド
データベースの同期。
% python manage.py syncdb
そして走らせる。
% python manage.py runserver
管理画面を開くとSphinxdocアプリにProjectというモデルがある。
これに導入したいドキュメントに関する情報を入力すると、/docs/以下にドキュメントが追加されるという仕組み。
管理画面からProjectモデルを追加する。
- Name: ドキュメントの名前
- Slug: URLに使うドキュメントの名前。Nameと同じで良い。
- Path: ドキュメントのディレクトリ(conf.pyがあるところ)へのパス。
あとは
$ python manage.py updatedoc -b <project-slug>
でビルドできる。
(ビルドされたドキュメントはsphinxdocアプリのdocumentモデルに保存される)
base.htmlを用意する
おもむろに /docs/ にアクセスしてみると
TemplateDoesNotExist at /docs/
base.html
と、「base.htmlが無い」というエラーがでる。
templatesとかディレクトリ作ってbase.htmlを配下に追加。
settingsのTEMPLATE_DIRSにtemplatesを追加すれば良い。
そしたらちゃんとブラウザからビルドされたドキュメントが見れるはず。
例としてDjangoの日本語ドキュメントをビルドしてみた
base.htmlはテキトーにこんなかんじ
<html> <head> <title> {% block title %}{% endblock %} </title> <head> <body> {% block content %} {% endblock content %} {% block sidebar %} {% endblock sidebar %} </body> </html>
とりあえずできる。
おわりに
あとはhaystackの設定とかbase.htmlを各々の環境に合わせれば良い。
ただbase.htmlをsphinxdocのインストール先に追加してるが気に入らない。良い方法模索したい。