Перевод публикации jQuery in the admin с DjangoAdvent
Обновления r12297 произвели настоящую сенсацию: в директории
django/contrib/admin/media/js
появился новый файл под названием jquery.js
. В администрировании Django это изменение являет собой начало новой эры, эры модных функций, красивых виджетов и улучшенного юзабилити.Аргументы в пользу jQuery
Несмотря на то, что интеграция библиотеки jQuery в администрирование обсуждалась и ранее, серьёзно её рассмотрели только этим летом в связи с предложением участника GSoC об улучшении интерфейса администрирования, предполагающее некоторые мощные интерфейсные функции, реализовать которые без использования фреймворка было бы трудно.
Необходимость Javascript-фреймворка в администрировании трудно недооценить. Сырой Javascript в любом приличном по размеру проекте постепенно приближается к объёму и сложности фреймворка. Это настоящее минное поле, где вы имеете дело с кросс-браузерными проблемами, «заплатками» и нормализацией; фреймворк снимает эти трудности, позволяя разработчикам сосредоточиться на создании классных штук. Мы всё время движемся вперёд, и сегодня просто не существует достаточных оснований, чтобы писать Javascript прямо в DOM API, когда вместо этого можно добавить полезную функциональность (с меньшим количеством багов).
Также нетрудно понять, почему jQuery является наиболее предпочтительным фреймворком: эта библиотека одержала уверенную победу в войне JS фреймворков. jQuery используют почти 30% сайтов, отслеживаемых builtwith.com. Выбор другой библиотеки будет свидетельствовать о менее компетентных разработчиках, менее доступном коде и небольшом сообществе поддержки.
Вовсе не значит, что Django продвигает jQuery
В сообществе наблюдается некоторое беспокойство по поводу того, что внедрение jQuery является продвижением одного фреймворка другим, а это совсем не так.
Собственно Django остаётся независимым от выбора инструментария. Администрирование является дополнительным приложением, созданным для конечных пользователей, а не для разработчиков. Инструментарий администрирования не влияет на контент-менеджера, при этом разработчики также не ограничиваются им.
Если вы модифицируете администрирование Django, jQuery абсолютно не будет вам мешать. Например, чтобы функция
$
не занимала пространство имён, администрирование использует jQuery.noConflict()
, следовательно, вы можете использовать $()
из Prototype в ваших личных виджетах без всяких конфликтов. Также, jQuery загружается только на тех страницах, где есть виджеты, которые её используют.Ваши приложения, как и раньше, могут использовать то, что вам кажется более подходящим. Что касается администрирования Django, то тут даже более разумно включить проверенный, надёжный фреймворк, чем добавлять глючные Javascript библиотеки с неполной документацией.
Теперь администрирование Django будет развиваться намного быстрее
Внешний интерфейс администрирования немного застоялся, поэтому ему необходимы передовые мощные возможности, а именно jQuery, новый «Царь дизайна», и общий фокус в сообществе на улучшенной юзабилити.
Версия Django 1.2 в основном сфокусирована на подготовке фундамента для будущих усовершенствований интерфейса администрирования, при этом наиболее заметные изменения начнут появляться только в Django 1.3 и последующих версиях. Тем не менее, некоторые вещи действительно удались.
Новые функции
Одна из первых функций jQuery в администрировании – это динамическое добавление новых строк. Чтобы ознакомиться с этой возможностью, посмотрите следующий ролик:
Многие разработанные функции не попали в Django 1.2, например, изменение порядка model-inlines с order-field путем перетаскивания, а также виджет автоматического заполнения для Foreign Key и связей M2M вместо выпадающего меню (или raw_id_fields). Наиболее вероятно, что эти и другие возможности появятся в Django 1.3.
Для пользователей администрирования Django настало замечательное время. Многие шикарные возможности уже доступны в версии 1.2, а на момент выхода 1.3 этих возможностей станет ещё больше. Во многом благодаря jQuery!
Предыдущие переводы с DjangoAdvent: