M
Қаз. 21, 2017, 9:33 Т.Қ.

Создание истории редактирования постов на сайте

Привет всем,


Делаю базу данных по игре на сайте который работает на Django. Хочется что бы любой пользователь мог редактировать статьи в базе данных и в связи с этим также хочется реализовать историю редактирования. Например как на Википедии или в WordPress админке.

Если ли у кого то идеи как это можно реализовать на Django?
2

Ол саған ұнайды ма? Әлеуметтік желілерде бөлісіңіз!

7
Evgenii Legotckoi
  • Қаз. 21, 2017, 10:15 Т.Қ.
  • (өңделген)
  • Жауап шешім ретінде белгіленді.

Добрый день!


Само редактирование страниц можно сделать в обычной форме редактирования с использованием того же самого CKEditor, поскольку вам понадобится WYSIWYG редактор для такого функционала.
А  потом самый простой есть вариант, это сделать кнопочку Редактировать на сайте, которая откроет страницу в которой будет форма редактирования статьи. Это будет ближе к админке WordPressa, то что сделано на Википедии - это значительно более сложная реализация.

Что касается истории сохраний, ревизий, то можно поискать среди готовых батареек для Django, например, django-simple-history, вроде как его советуют для подобного функционала, и он должен позволять откатиться до определённой ревизии.
    M
    • Қаз. 21, 2017, 10:37 Т.Қ.

    Большое спасибо за развернутый ответ. Первые два пункта уже готовы, редактор кстати выбрал quilljs .

      Evgenii Legotckoi
      • Қаз. 21, 2017, 10:46 Т.Қ.

      Не встречался с таким, когда подбирал редактор для своего сайта. django-quill - это он?
      Как у него по удобству с кастомизацией внешнего вида? А также что с подсветкой синтаксиса кода?

        M
        • Қаз. 21, 2017, 11:19 Т.Қ.

        Quilljs сложно сравнивать CKEditor. Quill намного менее функциональный редактор, но самая большая проблема с ним по крайней мере для меня, он по умолчанию(ли скорее рекомендовано) использует для сохранения json Delta, а не html. Хотя я сохраняю в БД html вот таким образом


        const quill = new Quill('#editor-container', {
            modules: {
              toolbar: '#toolbar-container'
            },
            placeholder: 'Напишите что то...',
            theme: 'snow'
          });
        
        
          $(document).ready(function () {
            var content = document.getElementById('id_content');
            var qlEditor = document.getElementsByClassName('ql-editor');
        
            if (content.value === '') {
              // Ести поле textarea пустое, вставлет пробел 
              content.value = ' ';
            } else {
              // При редактировании поста вставляет html
              // с textarea в quill редактор
              $('.ql-editor').html(content.value);
            }
        
            $("#toolbar-container").stick_in_parent();
        
          });
          // Передает html разметку с редактора в textarea
          // при отправке формы
          var form = document.querySelector('form');
          form.onsubmit = function () {
            var content = document.getElementById('id_content');
            content.value = quill.root.innerHTML;
          };
        django-quill заброшен так что я его не использую
          M
          • Қаз. 21, 2017, 11:29 Т.Қ.

          Кастомизируется очень просто и удобно, подсветку кода я не тестил, но как я понял для этого используется highlight.js

            Evgenii Legotckoi
            • Қаз. 21, 2017, 11:33 Т.Қ.

            Ясно. Тогда я лучше не буду тратить время на его проверку. Тем более, что я использую гугловский prettyprint для подсветки кода.

            Спасибо за информацию.
              M
              • Қаз. 22, 2017, 11:37 Т.Қ.
              • (өңделген)

              Вдруг кому будет интересно нашел уже готовое решение вопроса django-reversion + django-reversion-compare.

                Пікірлер

                Тек рұқсаты бар пайдаланушылар ғана пікір қалдыра алады.
                Кіріңіз немесе Тіркеліңіз