Приложение администрирования Django или список мое собственное? [закрытый]

Ну, вы сделали это очень тяжело для себя, дважды использовав одно и то же значение атрибута id. Правило состоит в том, что каждый элемент, который может иметь атрибут id, должен либо иметь уникальное значение атрибута id, либо вообще не иметь значения.

Если вы хотите повторно использовать значения, вы можете использовать атрибут класса вместо атрибута id.

Основная идея состоит в том, чтобы (1) написать JavaScript, который отслеживает, когда кто-то нажимает на кнопку, а затем (2) найти элемент для удаления и затем (3) удалить его.

Чтобы отслеживать щелчки, вы настраиваете функцию прослушивания и регистрируете ее для каждой кнопки. Прямо сейчас кажется, что вы знаете, как настроить функцию прослушивания и зарегистрировать ее, но вы только добавляете функцию к первой кнопке. Вы должны специально и явно присоединить слушателя к каждому отдельному элементу (или технически к контейнеру, но это педантично). Поскольку вы присоединяете слушателя только к одной кнопке, он будет работать только для этой одной кнопки и не будет работать для других кнопок.

Так что, чтобы это исправить, поищите все кнопки. Примерно так (как только вы измените id на класс):

var buttons = document.querySelectorAll('.delTodo');
for(var button of buttons) {
  button.onclick = deleteTask;
}

Во-вторых, когда кто-то щелкает, вы хотите найти то, на что он нажал. Так уж получилось, что когда функция прослушивателя вызывается в результате щелчка, она получает параметр события, и в этом параметре события вы можете найти то, что было нажато:

function deleteTaskOnClick(event) {
   // Find what was clicked. It is already found for us.
   var theButtonThatWasClicked = event.target;
}

В-третьих, теперь вам нужно удалить элемент. Каждый элемент в объектном модуле документа является объектом с методами. Одним из методов является remove(). Таким образом, вы просто вызываете метод remove элемента, чтобы отсоединить его.

function deleteTaskOnClick(event) {
   var button = event.target;

   // Find the containing element that represents the todo item as a whole
   var todoElement = button.parentElement;

   // Remove the containing element
   todoElement.remove();
}
21
задан 3 revs, 2 users 100% 5 August 2012 в 23:47
поделиться

6 ответов

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

я предполагаю, что необходимо видеть его как это:

Используя django администратора: сэкономьте время, пишущий это, потеряйте время с помощью него.
Прокрутка Вашего собственного администратора: потеряйте время, пишущий это, сэкономьте время с помощью него.

16
ответ дан 29 November 2019 в 20:09
поделиться

Я использовал бы приложение администрирования Django по ряду причин. Во-первых, запись приложения администрирования может быть довольно хитрой и занять время, если Вы хотите сделать ее правильно, и django.contrib.admin бесплатно и работает из поля. Во-вторых, это действительно хорошо разработано и очень хорошо работать с (даже для нетехнических пользователей). В-третьих, это покрывает много общих падежей, и не кажется мудрым напрасно тратить время при перезаписи его, пока Вы не действительно уверены, что не можете сделать иначе. В-четвертых, не действительно настолько трудно настроить. Например, добавление akismet метка поскольку спам и кнопки метки поскольку ветчина было действительно куском пирога.

17
ответ дан 29 November 2019 в 20:09
поделиться

Настолько легко выборочно переопределить части администратора в различных степенях.

Вы можете:

  1. администратор Переопределения обрабатывает по шаблону на приложении основанием приложения или даже модели базисом модели.

  2. администраторские представления Переопределения путем наследования и разделения на подклассы

  3. администраторский URL Catch путем помещения Вашего, прежде чем это в urls.py и обеспечивает собственные интерфейсы, которые основаны на администраторском стиле

... и партии больше.

Так запускаются с администратора и затем слота в любой пользовательской функциональности, в которой Вы нуждаетесь, где Вам нужен он.

существует набор приложений, которые делают умные вещи с администратором. Например:

  • django-возвращение принимает журнал администратора и расширяет его в полную историю.
  • клык CMS объединяется, django-mptt приложение с JQuery вложило поддающийся сортировке виджет аккуратным способом.

Также поисковые django-отрывки для связанных с администраторами отрывков и эта страница имеет богатство информации

7
ответ дан 29 November 2019 в 20:09
поделиться

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

3
ответ дан 29 November 2019 в 20:09
поделиться

Рассмотрите использование администратора Django, но с Вашими собственными виджетами ручной работы для конкретных полей. Можно создать сложные части формы и сказать администратору использовать код для исходных данных и дисплеев любого определенного поля или всех полей типа.

Jannis сделал некоторый интересный материал, и его работа показывает Вам, насколько легкий это: http://jannisleidel.com/2008/11/wysiwym-editor-widget-django-admin-interface/

проект А, что я продолжаю работать недавно, включил средство выбора времени, которое использование выпадает для различных частей времени, (h, m, s), Другое поле указало бы, какие дни недели повторялись..., это будет использовать 7 флажков в течение дней недели и хранилище это в базе данных как соленый dateutil.rruleset. Затем Вы просто даете администраторские подсказки на который виджеты использовать для различных полей.

Это включает определение Вашего класса данных, Ваш собственный виджет, который разделяет формы на подклассы. Виджет, Ваше собственное Поле, которое разделяет формы на подклассы. Поле и модель. Поле также. Каждый из этих трех классов является хорошим и простым и чистым, и является ответственным за переход от базы данных до Модели, Модели к Виджету, и назад через те два шага. Это - действительно вещь красоты.

поля, которые Вы создаете, будут частью самой допускающей повторное использование, сложной интеллектуальной собственности, которую можно накопить..., и Вы не должны писать Вашему собственному администратору с нуля.

3
ответ дан 29 November 2019 в 20:09
поделиться

Я рекомендовал бы включить администраторский сайт на примерно каждом типе проекта. Стоимость установки его является довольно низкой, и она дает Вам довольно удобный механизм для осмотра и изменения Вашего сайта.

, Если Ваш сайт имеет главным образом один путь поток информации от веб-мастера посетителям, то администраторский сайт - вероятно, все, которое Вам нужно.

, Если, однако, Ваш сайт имеет более богатое взаимодействие среди своих пользователей, необходимо будет составить представления django, которые могут включить то взаимодействие, также ограничивая доступ к тому, что могут действительно сделать пользователи.

1
ответ дан 29 November 2019 в 20:09
поделиться
Другие вопросы по тегам:

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