Python CMS для моего собственного сайта?

Исходя из нашего обсуждения в комментариях, я предложил другое решение вашей проблемы.

Вместо создания новой таблицы каждый раз, когда выбирается категория (и с использованием локального хранилища), вы можете отобразить все данные категории в таблице, а затем скрыть и показать строки таблицы в зависимости от того, какая категория выбрана.

Это будет означать, что любые количественные значения, выбранные пользователем, останутся в полях ввода (даже при изменении категории), поскольку поле ввода останется в DOM.

Сначала вам нужно будет добавить имя категории к каждому элементу в вашем JSON, т.е.

{ "Item Code": "1056", "Item Name": "banana shake", "category name": "juce"}

Затем, когда таблица генерируется (в функции addTable), вы добавляете класс с именем [ 117], а также класс, равный "category name" в JSON (таким образом, производя теги tr аналогично следующему формату):

<tr class="item-row juce">

Примечание: это так, что мы можем нацеливать определенные строки на динамически добавлять стили.

Когда выбрана новая категория, вы можете динамически добавлять стили к соответствующим строкам. Стиль, который мы можем использовать для скрытия и отображения строк таблицы, является свойством видимости, которое мы можем установить либо видимым (чтобы показать строку), либо свернутым (чтобы скрыть строку).

element.style.visibility = "visible";

ИЛИ

element.style.visibility = "collapse";

Итак, учитывая все это, ваш код будет выглядеть следующим образом (я прокомментировал, где я добавил код):

addTable function [ 119]
function addTable(tableData) {
  var col = Object.keys(tableData[0]);
  var countNum = col.filter(i => !isNaN(i)).length;
  var num = col.splice(0, countNum);
  col = col.concat(num);
  var table = document.createElement("table");
  var tr = table.insertRow(-1); // TABLE ROW.
  var colNum = col.length; //to improve the speed
  for (var i = 0; i < colNum + 1; i++) {
    var th = document.createElement("th"); // TABLE HEADER.
    if (i >= colNum) {
      th.innerHTML = "Quantity";
      tr.appendChild(th);
      tr.classList.add("text-center");
      tr.classList.add("head")
    } else {
      th.innerHTML = col[i];
      tr.appendChild(th);
      tr.classList.add("text-center");
      tr.classList.add("head")
    }
  }
  for (var i = 0; i < tableData.length; i++) {
    tr = table.insertRow(-1);
    //add a class called "item-row" to the table row so that we can target all item rows 
    tr.classList.add("item-row");
    for (var j = 0; j < col.length + 1; j++) {
      //add a class with the name of the category to each items row. This will be either juce, rice or roti etc. 
      var categoryName = tableData[i]["category name"];
      tr.classList.add(categoryName);

      let tabCell = tr.insertCell(-1);
      var hiddenField = document.createElement("input");
      hiddenField.style.display = "none";
      var tabledata = tableData[i][col[j]];
      if (i > -1 && j >= colNum) {

        var quantityField = document.createElement("input");
        quantityField.style.border = "none";
        quantityField.style["text-align"] = "center";
        quantityField.setAttribute('name', 'Quantity');
        quantityField.setAttribute('autocomplete', 'on');
        quantityField.setAttribute('value', '0');
        quantityField.setAttribute('type', 'number');
        quantityField.setAttribute('required', 'required');
        quantityField.classList.add("dataReset");
        tabCell.appendChild(quantityField);
      } else {

        if (tableData[i]['Item Code'] === tableData[i][col[j]]) {
          tabCell.innerHTML = tabledata;
          hiddenField.setAttribute('name', 'Item_Code');
          hiddenField.setAttribute('value', tabledata);
          tabCell.appendChild(hiddenField);
        }
        if (tableData[i]['Item Name'] === tableData[i][col[j]]) {
          tabCell.innerHTML = tabledata;
          hiddenField.setAttribute('name', 'Item_Name');
          hiddenField.setAttribute('value', tabledata);
          tabCell.appendChild(hiddenField);
        }
        if (j > 1)
          tabCell.classList.add("text-right");
      }
    }
  }
  var divContainer = document.getElementById("HourlysalesSummary");
  divContainer.innerHTML = "";
  divContainer.appendChild(table);
  table.classList.add("table");
  table.classList.add("table-striped");
  table.classList.add("table-bordered");
  table.classList.add("table-hover");
}

Функция обмена CategoryName

  $('#CategoryName').on('change', function() {
    var selectedOption = this.value;
    console.log(selectedOption);
    //get all item rows so we can target them.
    var itemRows = document.getElementsByClassName("item-row");

    if(selectedOption === 'All'){
        //If "All" then style all rows with visibility: visible.
        for(var i = 0; i < itemRows.length; i++){
               itemRows[i].style.visibility = "visible";
        }
    }else{
        //If the selectedOption is anything other than "All",
        //we firstly style all rows with visibility: collapse
        for(var i = 0; i < itemRows.length; i++){
            itemRows[i].style.visibility = "collapse";
        }
        //we then get all rows which have the selectedOption as a class and style those rows with visibility: visible.
        var selectedItemRows = document.getElementsByClassName(selectedOption);
        for(var i = 0; i < selectedItemRows.length; i++){
            selectedItemRows[i].style.visibility = "visible";
        }
    }
  });
5
задан Bill Karwin 1 December 2008 в 02:59
поделиться

7 ответов

Это зависит, какие инструменты Вы ищете.

Что касается редактора, если Вам нравятся материал CLI, затем emacs или энергия, способ пойти (я предпочитаю emacs). Если Вы выбираете emacs, то можно также хотеть использовать pymacs для настройки его (так как Вы уже будете знакомы с Python). Если Вы хотите некоторые подобные intellisense функции, то затмеваете, хороший способ пойти, но я должен предупредить Вас: Python может быть хитрым языком, чтобы сделать такой материал для. Таким образом это не может быть тем, к чему Вы привыкли с некоторыми другими языками. Все равно можно дать pydev выстрел.

Я также рекомендовал бы идти с trac для билетов, исходного просмотра, и для использования Вашего buildbot непрерывного сервера интеграции.

И инструменты как pylint и велосипедный ремонтник всегда полезны также.

2
ответ дан 18 December 2019 в 07:32
поделиться
  1. Есть ли другой CMS Python? Да, существует. Они лучше, чем Django? С некоторой точки зрения, да. Необходимо ли измениться? Нет. Изучите Django, это столь же хорошо как или лучше, чем большинство.

  2. Возможно, весь текущий Python пакеты CMS является также "альфой". Шокирующий оператор, IMO. Однако, если Вы думаете, что можно добиться большего успеха, любой ценой, вскочить. Однако это - огромный объем работы, и Ваша цель не говорит, "делают огромный объем работы для изобретения еще одной Платформы CMS".

  3. Вы развернули бы CMS со встроенным (или плагин) поддержка блогов, форумов, и т.д. Я не полностью получаю это. Существует содержание (т.е. сообщения в блоге, регистрации форума) и существует веб-приложение (т.е. блог-сайт с комментариями форума). Они - различные звери, веб-приложения зависят от CMS. CMS может (обычно) обрабатывать любой вид содержания; поэтому, блоги обычно не описываются как "плагины", они просто довольны. Возможно, Вы хотите предварительно созданную модель содержания для блогов или чего-то? Не уверенный, каков Ваш вопрос действительно.

    • доверие собственному сайту [для] переиздавания содержания Blogger.com. Трудно для знания, что сказать здесь. Это соответствует Вашим целям просто проксировать или переименовать nabble. Но это не соответствует Вашим другим целям, потому что Вы не изучите очень Django, CMS или любую другую технологию. Так как Ваша первая цель и Ваш технологический список не совпадают хорошо, я понятия не имею, что Вы планируете сделать: изучите Django или работайте над своей книгой и переместите Ваш блог. Не уверенный, каков Ваш вопрос действительно.
  4. Иногда пакету CMS интегрировали его собственный CSS, и использующий другую платформу CSS было бы избыточно или иначе не имел бы никакого смысла. Корректный. Не уверенный, каков Ваш вопрос действительно.

  5. Есть ли плагины для Django в Eclipse или Netbeans? Действительно ли это "позволено меня Google это для Вас" вопрос? http://pydev.sourceforge.net/ является плагином Eclipse для Python. http://wiki.netbeans.org/Python является информацией о плагине Python для Сетевых Бобов. Django является просто Python, таким образом, Django-определенный плагин действительно не означает много. Редактирование Комодо знает шаблонный синтаксис Django и может сделать некоторую подсветку синтаксиса.Отлично.

  6. Что некоторый ток являются предпочтенные инструменты для поблочного и функционального тестирования приложением Django? Python имеет unittest инструменты. Они - часть Python. Не часть IDE. У Django есть инструменты поблочного тестирования. Они - часть Django - который является просто Python - не часть IDE. Вы просто выполняете их, и они производят текстовый журнал того, что произошло.

9
ответ дан 18 December 2019 в 07:32
поделиться

Никто здесь, кажется, не упоминает более старые платформы CMS, как Plone.

Заключение в кавычки Википедии:

Plone является свободной и системой управления контентом с открытым исходным кодом, созданной сверху сервера приложений Zope. Это подходит для внутреннего веб-сайта или может использоваться в качестве сервера в Интернете, играя такие роли как документ, публикующий систему и инструмент сотрудничества программного обеспечения для совместной работы.

Запущенный в 1999, последним выпуском является Plone 3.1.7, датированный ноябрем 2008. Plone в порядке - сайт в настоящее время является сайтами списка 1420, приводимыми в действие Plone.

Декабрь 2009 обновления статуса: Версия 3.3.2 (ноябрь 2009) является текущей. 1 904 сайта перечислены, как приводится в действие Plone.

5
ответ дан 18 December 2019 в 07:32
поделиться

Если бы Вы хотите придерживаться Python, чем я сказал бы, что Django является Вашим лучшим выбором. out-of-the-box администратор UI сохранит Вас много времени. Я избежал бы Plone, если Вы не планируете использование как есть его, который, кажется, не имеет место. Если мы должны сделать серьезные модификации, Вы - вероятно, более обеспеченное здание что-то в Zope2. Из Вашего описания это кажется действительно, что лучшей платформой был бы Wordpress. Это - открытый исходный код, но базирующийся PHP. Даже при том, что не создают в Python You, может хотеть посмотреть на него хотя, так как это - превосходная платформа публикации, занося инструмент в блог. Можно всегда смешивать 2 так или иначе. У меня есть блог, который работает на Wordpress и пользовательской сборке покер-сайта в Zope2. Я сделал, чтобы Zope наполнил на субдомене и выполнил задание крона, которое захватывает заголовок и файлы нижнего колонтитула из Wordpress каждые несколько минут.

2
ответ дан 18 December 2019 в 07:32
поделиться

Вы все установлены, просто сделайте это :)
Прочитайте django учебное руководство для начала работы (если Вы уже не имеете).
Я не знаю все о django или Python, я просто сохраняю ссылки своей стороной.

1
ответ дан 18 December 2019 в 07:32
поделиться

Оформить заказ django-blocks . Имеет многоязычное меню, плоские страницы и даже простую корзину!

1
ответ дан 18 December 2019 в 07:32
поделиться

Web2Py выглядит хорошо, но у меня нет опыта с ним.

1
ответ дан 18 December 2019 в 07:32
поделиться
Другие вопросы по тегам:

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