В качестве личного проекта я пытаюсь написать вики с помощью django. Я новичок в веб-разработке. Я на (раннем) этапе, когда мне нужно решить, как хранить вики-сайты. У меня есть три подхода, и я хотел бы знать ваше предложение.
Плоские файлы
Я рассматривал подход с использованием плоских файлов с системой контроля версий, такой как git или mercurial. Во-первых, мне бы хотелось посмотреть на несколько примеров вики, например http://hatta.sheep.art.pl/ < / а>. Во-вторых, vcs, вероятно, будет иметь дело с конфликтами редактирования и сохранением истории редактирования, так что мне не придется изобретать велосипед. И в-третьих, я, вероятно, легко мог бы клонировать репозиторий вики, так что я (или, если на то пошло, другие) могу иметь автономную копию вики.
С другой стороны, насколько мне известно, я не могу использовать модели django с плоскими файлами. Затем, если бы я хотел добавить поля на вики-сайт, например категорию, мне нужно было бы каким-то образом сохранить ссылку на этот плоский файл, чтобы связать поля в базе данных с плоским файлом. Кроме того, я не знаю, стоит ли иметь все вики-сайты в одном репозитории. Я полагаю, что более естественно иметь что-то вроде репозитория для каждого вики-сайта, соответственно. файл. И последнее, но не менее важное: я не уверен, но я думаю, что использование плоских файлов ограничит мои возможности развертывания, потому что веб-хосты, возможно, не позволяют создавать файлы (я думаю, например, о Google App Engine)
Хранение в базе данных
Сохраняя вики-сайты в базе данных, я могу использовать модели django и связывать произвольные поля с вики-сайтом. Мне, наверное, было бы легче развернуть вики. Но я бы не получил таких функций vcs, как история и разрешение конфликтов как таковых. Я искал расширения django, чтобы помочь мне, и нашел django-reversion. Однако я не совсем понимаю, соответствует ли это моим потребностям. Отслеживает ли он изменения модели, например, если я изменяю файл модели django, или отслеживает ли он содержимое моделей (что соответствует моим потребностям). Кроме того, я не вижу, поможет ли мне реверсия django с конфликтами редактирования.
Хранение репозитория vcs в поле базы данных
Это было бы моим идеальным решением. Он сочетал бы в себе преимущества обоих предыдущих подходов без недостатков. Это; У меня были бы функции vcs, но я бы сохранил вики-сайты в базе данных. Проблема в том, что я понятия не имею, насколько это возможно. Я просто представляю себе сохранение вики-сайта / источника вместе с репозиторием git / mercurial в поле базы данных. Тем не менее, я почему-то сомневаюсь, что поля базы данных так работают.
Итак, я открыт для любых других подходов, но это то, что я придумал. Кроме того, если вам интересно, вы можете найти дрянной ранний тест, над которым я работаю, здесь http://github.com/eugenkiss/instantwiki-test