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