HTML Diff
1 added 1 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Создание раздела администратора, через который пользователи смогут добавлять, изменять и удалять данные - утомительная работа. Она не требует творческого подхода. По этой причине Django полностью автоматизирует создание раздела администратора на основе моделей.</p>
1 <p>Создание раздела администратора, через который пользователи смогут добавлять, изменять и удалять данные - утомительная работа. Она не требует творческого подхода. По этой причине Django полностью автоматизирует создание раздела администратора на основе моделей.</p>
2 <p>Django разрабатывался с упором на разделение сайта на две части: редактирование контента и просмотр контента. В этом уроке мы разберем работу с Django Admin, который администраторы сайта используют, чтобы добавлять контент на сайт. И он будет отображаться для всех посетителей сайта. Django Admin не предназначен для использования обычными посетителями, это место для управления сайтом.</p>
2 <p>Django разрабатывался с упором на разделение сайта на две части: редактирование контента и просмотр контента. В этом уроке мы разберем работу с Django Admin, который администраторы сайта используют, чтобы добавлять контент на сайт. И он будет отображаться для всех посетителей сайта. Django Admin не предназначен для использования обычными посетителями, это место для управления сайтом.</p>
3 <h2>Создание суперпользователя</h2>
3 <h2>Создание суперпользователя</h2>
4 <p>Если мы посмотрим на наш главный файл<em>urls.py</em>, то увидим, что по умолчанию раздел администратора у нас подключен:</p>
4 <p>Если мы посмотрим на наш главный файл<em>urls.py</em>, то увидим, что по умолчанию раздел администратора у нас подключен:</p>
5 <p>Если перейти по данному адресу, откроется страница для входа в раздел администратора:</p>
5 <p>Если перейти по данному адресу, откроется страница для входа в раздел администратора:</p>
6 <p>Чтобы войти в раздел администратора, нам необходимо иметь учетную запись пользователя со статусом Staff. Мы можем создать учетную запись<em>superuser</em>, у которой есть полный доступ к сайту и все необходимые разрешения. Для этого выполним следующую команду и заполним информацию о себе:</p>
6 <p>Чтобы войти в раздел администратора, нам необходимо иметь учетную запись пользователя со статусом Staff. Мы можем создать учетную запись<em>superuser</em>, у которой есть полный доступ к сайту и все необходимые разрешения. Для этого выполним следующую команду и заполним информацию о себе:</p>
7 <p>Теперь мы можем зайти в админку под созданной учетной записью:</p>
7 <p>Теперь мы можем зайти в админку под созданной учетной записью:</p>
8 <p>В этом разделе мы видим все наши модели, которые сгруппированы по установленному приложению. Пока мы видим несколько типов редактируемого контента: группы и пользователи. Они предоставляются django.contrib.auth платформой аутентификации, которая поставляется Django.</p>
8 <p>В этом разделе мы видим все наши модели, которые сгруппированы по установленному приложению. Пока мы видим несколько типов редактируемого контента: группы и пользователи. Они предоставляются django.contrib.auth платформой аутентификации, которая поставляется Django.</p>
9 <h2>Регистрация моделей</h2>
9 <h2>Регистрация моделей</h2>
10 <p>Чтобы добавить в админку наши модели для редактирования, нам нужно отредактировать файл<em>admin.py</em>. Он расположен внутри приложения:</p>
10 <p>Чтобы добавить в админку наши модели для редактирования, нам нужно отредактировать файл<em>admin.py</em>. Он расположен внутри приложения:</p>
11 <p>Мы зарегистрировали нашу модель в админке, и при обновлении страницы у нас появится новый раздел:</p>
11 <p>Мы зарегистрировали нашу модель в админке, и при обновлении страницы у нас появится новый раздел:</p>
12 <p>Теперь через новый раздел мы можем управлять данными в модели: добавлять, редактировать и удалять. Но если откроем список статей, увидим следующие названия:</p>
12 <p>Теперь через новый раздел мы можем управлять данными в модели: добавлять, редактировать и удалять. Но если откроем список статей, увидим следующие названия:</p>
13 - <p>Такие названия задаются методом __str__, который по умолчанию состоит из азвания класса и<em>id</em>записи в базе данных. Чтобы привести данный список к более читаемому и понятному виду, нам нужно в классе модели переопределить данный метод:</p>
13 + <p>Такие названия задаются методом __str__, который по умолчанию состоит из названия класса и<em>id</em>записи в базе данных. Чтобы привести данный список к более читаемому и понятному виду, нам нужно в классе модели переопределить данный метод:</p>
14 <p>В данном примере мы указываем, что в качестве названия объекта нужно возвращать значение поля name. Так в качестве названия мы можем использовать любые поля, их комбинации или брать поля из связанных моделей. Теперь наш список будет выглядеть более читаемым для человека:</p>
14 <p>В данном примере мы указываем, что в качестве названия объекта нужно возвращать значение поля name. Так в качестве названия мы можем использовать любые поля, их комбинации или брать поля из связанных моделей. Теперь наш список будет выглядеть более читаемым для человека:</p>
15 <h2>Настройка отображения</h2>
15 <h2>Настройка отображения</h2>
16 <p>Возможности Django Admin на этом не заканчиваются. Например, при помощи дополнительных параметров можно производить фильтрации списков по параметрам, ограничивать список выдачи по авторам, организовывать поиск.</p>
16 <p>Возможности Django Admin на этом не заканчиваются. Например, при помощи дополнительных параметров можно производить фильтрации списков по параметрам, ограничивать список выдачи по авторам, организовывать поиск.</p>
17 <p>Попробуем добавить поисковую форму, чтобы можно было найти нужную статью по названию. Для этого изменим содержание файла<em>admin.py</em>:</p>
17 <p>Попробуем добавить поисковую форму, чтобы можно было найти нужную статью по названию. Для этого изменим содержание файла<em>admin.py</em>:</p>
18 <p>Мы добавили класс, который описывает дополнительные свойства для отображения и работы с нашей моделью в разделе администратора. В данном случае мы указали поле search_fields, в которое передали списком названия полей. По ним будет осуществляться поиск. Всю остальную работу по добавлению поля для ввода поискового запроса, контекстному поиску по выбранным полям на себя берет Django Admin:</p>
18 <p>Мы добавили класс, который описывает дополнительные свойства для отображения и работы с нашей моделью в разделе администратора. В данном случае мы указали поле search_fields, в которое передали списком названия полей. По ним будет осуществляться поиск. Всю остальную работу по добавлению поля для ввода поискового запроса, контекстному поиску по выбранным полям на себя берет Django Admin:</p>
19 <p>Мы можем улучшить читаемость нашего кода, если воспользуемся декоратором @admin.register(). Он позволяет связать модель с классом и провести регистрацию модели в разделе администратора:</p>
19 <p>Мы можем улучшить читаемость нашего кода, если воспользуемся декоратором @admin.register(). Он позволяет связать модель с классом и провести регистрацию модели в разделе администратора:</p>
20 <p>Еще добавим отображение в списке статей даты публикации и фильтрацию по данному полю:</p>
20 <p>Еще добавим отображение в списке статей даты публикации и фильтрацию по данному полю:</p>
21 <p>Кроме этого мы можем настраивать разделение на секции, выделять подробное представление, работать со связанными записями, управлять отображением полей.</p>
21 <p>Кроме этого мы можем настраивать разделение на секции, выделять подробное представление, работать со связанными записями, управлять отображением полей.</p>
22 <p>Django Admin - мощный инструмент, с помощью которого можно автоматизировать создание административной части сайта, просмотра, обновления и удаления записей. Это позволяет сэкономить много времени в процессе разработки и упростить тестирование моделей.</p>
22 <p>Django Admin - мощный инструмент, с помощью которого можно автоматизировать создание административной части сайта, просмотра, обновления и удаления записей. Это позволяет сэкономить много времени в процессе разработки и упростить тестирование моделей.</p>