Pull to refresh

jQuery в администрировании

Reading time3 min
Views3.3K
Original author: Zain Memon
Перевод публикации jQuery in the admin с DjangoAdvent


Обновления r12297 произвели настоящую сенсацию: в директории django/contrib/admin/media/js появился новый файл под названием jquery.js. В администрировании Django это изменение являет собой начало новой эры, эры модных функций, красивых виджетов и улучшенного юзабилити.

Аргументы в пользу jQuery


Несмотря на то, что интеграция библиотеки jQuery в администрирование обсуждалась и ранее, серьёзно её рассмотрели только этим летом в связи с предложением участника GSoC об улучшении интерфейса администрирования, предполагающее некоторые мощные интерфейсные функции, реализовать которые без использования фреймворка было бы трудно.

Необходимость Javascript-фреймворка в администрировании трудно недооценить. Сырой Javascript в любом приличном по размеру проекте постепенно приближается к объёму и сложности фреймворка. Это настоящее минное поле, где вы имеете дело с кросс-браузерными проблемами, «заплатками» и нормализацией; фреймворк снимает эти трудности, позволяя разработчикам сосредоточиться на создании классных штук. Мы всё время движемся вперёд, и сегодня просто не существует достаточных оснований, чтобы писать Javascript прямо в DOM API, когда вместо этого можно добавить полезную функциональность (с меньшим количеством багов).
weebly reliable statistics

Также нетрудно понять, почему 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:
Tags:
Hubs:
Total votes 44: ↑33 and ↓11+22
Comments21

Articles