paus
@paus
Backend-разработчик

Что можно использовать как help для проекта в Django?

Добрый день!

Есть задача: взять структуру каталогов:

directory/
./name.txt
./content.html
./subdirectory/
./subdirectory/name.txt
./subdirectory/content.html

Слева отобразить имена для каждой директории в виде дерева, а справа - контент в content.html при нажатии.

Прежде чем реализовывать help для приложения в таком виде, я хотел бы спросить: есть ли уже готовые решения, которые можно использовать и легко переносить с одного сервера на другой? (и какие проблемы с help-ами, которые хранят всё в реляционных БД?)

Спасибо!
  • Вопрос задан
  • 384 просмотра
Пригласить эксперта
Ответы на вопрос 1
atomheart
@atomheart
Пишу на Python за карму и за деньги
Приведу свой велосипед)

Во-первых, структуру можно упростить и универсализировать одновременно:

docs/
./intro1.md
./intro2.md
./chapter1/
./chapter1/part1.md
./chapter1/part2.md


Т.е. названия файлов - это названия страницы. Содержание по такой структуре можно построить просто как дерево файлов указанного каталога.

Во-вторых, используйте MarkDown синтаксис и расширение под Python. Простота в редактировании и легко и корректно конвертируется в html.

В-третьих, обрабатывается такая структура очень просто в Django:

urls.py
urlpatterns = patterns(
    '',
    url(r'^wiki/(.*)$', 'wiki.views.wiki', name='wiki'),
)


views.py
def 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>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы