Содержание
Перевод © Попов Руслан <radz • yandex • ru>
Данная глава временно взята из первой версии книги и подлежит корректировке. Вы можете помочь с этим!
Интерфейс администратора Django был представлен в главе «Интерфейс администратора Django», а теперь пришло время вернуться к нему и изучить его подробнее.
Как мы рассказывали ранее, интерфейс администратора является одной из «убийственных» особенностей Django и многие разработчики считают, что его использование сильно экономит время. По причине большой популярности интерфейса администратора большинство разработчиков желают настроить его для своих нужд или расширить его функциональность.
Несколько последних разделов главы «Интерфейс администратора Django» описывают несколько простых способов настройки определённых частей интерфейса администратора. Давайте вспомним, о чём там было написано. Там описывался процесс настройки списков и форм редактирования для приведения интерфейса к стилю вашего сайта.
Также там обсуждалось, когда и зачем надо использовать интерфейс администратора (см. главу «Когда и почему надо использовать интерфейс администратора, а когда не надо»). Интерфейс администратора позволяет решать такие общие задачи с минимальной настройкой под них или вообще без неё. Но такой подход означает, что интерфейс не может работать в других режимах редактирования.
Мы обсудим режимы для которых не предназначен интерфейс администратора позже. Давайте сначала разберёмся в философии.
Чтобы избежать траты времени на отладку в случае необъяснимого
сбоя в работе интерфейса администратора, рекомендую проверить
имена методов в моделях. Например, метод
email()
в какой-нибудь модели может доставить
массу неприятных минут.
По своей сути интерфейс администратора Django предназначен для единственной работы — доверенные пользователи редактируют структурированную информацию.
Да, это очень просто, но эта простота базируется на целом наборе предположений. Вся философия интерфейса администратора следует из этих предположений, так что давайте углубимся в подтекст этой фразы в следующей секции.
Интерфейс администратора предназначен для использования людьми, которым вы, разработчик, доверяете. Это не просто означает «людей, которые были аутентифицированы», это означает, что Django предполагает, что ваши редакторы будут делать всё правильно.
Это, в свою очередь, означает, что не существует утверждённого процесса редактирования информации — если вы доверяете вашим пользователям, то никто не нуждается в подтверждении его действий. Следующим предположением является то, система прав доступа, мощная, не имеет поддержки для ограничения доступа на по объектной основе. Если вы доверяете кому-то редактировать его данные, то значит вы верите в то, что этот пользователь не будет редактировать чужие данные без соответствующего разрешения.
Основное назначение интерфейса администратора Django — позволить пользователям редактировать данные. С первого взгляда это кажется очевидным, но снова тут не всё так просто.
Например, несмотря на то, что интерфейс администратора достаточно удобен для просмотра данных, это не учитывали при его разработке. Вспомните недостаток права «может просматривать» (см. главу «Сессии, пользователи и регистрация»). Django предполагает, что раз пользователям позволено просматривать информацию через административный интерфейс, следовательно им можно редактировать её.
Следующим важным элементом является недостаток пошагового процесса FIXME??? Если процесс требует выполнения серии действий, нет никакой возможности заставить пользователя выполнить эти действия в строго определённом порядке. Интерфейс администратора Django нацелен на «редактирование», а не на сопутствующую активность. Также такое упразднение рабочего процесса нарушает принцип доверия: философия интерфейса администратора такова, что рабочий процесс является добровольным действием пользователя, а не чем-то, что реализовано в коде.
Наконец, следует отметить недостаток возможностей обобщения информации в интерфейсе администратора. Не существует поддержки для отображения сумм, среднего и так далее. Снова повторим, что интерфейс администратора предназначен для редактирования — подразумевается, что вы напишете свои функции представления для всего остального.
Аналогично остальным компонентам Django, использование интерфейса администратора подразумевает, что вы управляете структурированными данными. Следовательно, он поддерживает редактирование только тех данных, которые хранятся в моделях. Для всего остального, например, для хранения данных на файловой системе, вам потребуется реализовать собственные функции представления.
Теперь должно быть очевидно, что интерфейс администратора Django не пытается делать всё для всех. Вместо этого мы тщательно сфокусировались на одной вещи и делаем её очень хорошо.
Когда наступает пора расширения функциональности интерфейса администратора Django, большая часть описанной философии применяется и здесь (следует отметить, что такие возможности «расширения» отсутствовали среди наших целей). Так как собственные представления могут реализовывать любую функциональность и так как они могут легко быть визуально интегрированы в интерфейс администратора (как описано в следующей секции), встроенные возможности для настройки интерфейса являются чем-то ограниченным по дизайну FIXME???
Следует помнить, что административный интерфейс является «всего лишь приложением», хотя и очень сложным. Он не делает ничего такого, чего любой Django разработчик при наличии достаточного времени не сможет воспроизвести. Вполне возможно, что в будущем кто-нибудь разработает другой интерфейс, который будет базироваться на отличном от текущего наборе предположением и, соответственно, будет работать иначе.
Наконец, мы должны упомянуть, что Django разработчики работают над новой версией административного интерфейса, который предоставит гораздо большие возможности по его настройке. Пока вы читаете эту книгу, эти новые возможности могут быть уже внедрены в дистрибутив Django. Просто спросите кого-нибудь из сообщества Django, был ли интегрирована ветка «newforms-admin» в общий репозиторий кода.
0 комментариев | Оставьте комментарий