Приведу свой велосипед)
Во-первых, структуру можно упростить и универсализировать одновременно:
docs/
./intro1.md
./intro2.md
./chapter1/
./chapter1/part1.md
./chapter1/part2.md
Т.е. названия файлов - это названия страницы. Содержание по такой структуре можно построить просто как дерево файлов указанного каталога.
Во-вторых, используйте MarkDown синтаксис и
расширение под Python. Простота в редактировании и легко и корректно конвертируется в html.
В-третьих, обрабатывается такая структура очень просто в Django:
urls.pyurlpatterns = patterns(
'',
url(r'^wiki/(.*)$', 'wiki.views.wiki', name='wiki'),
)
views.pydef wiki(request, page=None):
if not page:
page = 'main'
file_name = os.path.join('.', 'wiki', page)
file_name = ''.join((file_name, '.md'))
input_file = codecs.open(file_name, mode="r", encoding="utf-8")
text = input_file.read()
input_file.close()
content = markdown.markdown(text)
context = {
"wiki_content": content,
"wiki_title": page
}
return render_to_response(
'wiki.html',
dirs=get_dirs(),
dictionary=context,
context_instance=RequestContext(request)
)
и шаблон
wiki.html:
<!DOCTYPE html>
<html>
<head>
<title>{{ wiki_title }} - Wiki</title>
</head>
<body>
<h1>{{ wiki_title }}</h1>
<hr>
<div class="content">
{{ wiki_content|safe }}
</div>
</body>
</html>