Администрирование Django
Чтобы добавлять, редактировать и удалять записи, для которых мы только что создали модель, мы используем панель управления администратора Django.
Давай откроем файл blog/admin.py и заменим его содержимое на:
from django.contrib import admin from .models import Post admin.site.register(Post)
Как ты можешь заметить, мы импортировали (включили) модель Post, которую определили в предыдущей главе. Чтобы наша модель стала доступна на странице администрирования, нам нужно зарегистрировать её при помощи admin.site.register(Post) .
Хорошо, теперь нам нужно взглянуть на модель Post. Не забудь запустить веб-сервер командой python manage.py runserver . Перейди в браузер и набери адрес http://127.0.0.1:8000/admin/. Ты увидишь страницу авторизации:

Чтобы залогиниться, тебе сначала нужно создать суперпользователя (англ. superuser) — пользователя, который имеет полный доступ к управлению сайтом. Вернись к командной строке, набери python manage.py createsuperuser , и нажми Enter.
Не забудь: чтобы выполнять команды во время работы сервера, открой новое окно терминала и активируй в нём виртуальное окружение. Мы описывали ввод новых команд в разделе Запуск веб-сервера главы Твой первый проект на Django!.
При появлении запроса введи имя пользователя (строчными буквами, без пробелов), адрес электронной почты и пароль. Не беспокойся, если пароль не появляется на экране по мере ввода, так и задумано. Просто напечатай его и нажми Enter , чтобы продолжить. Результат должен выглядеть следующим образом (имя пользователя и почта, соответственно, будут твоими):
(myvenv) ~/djangogirls$ python manage.py createsuperuser Username: admin Email address: admin@admin.com Password: Password (again): Superuser created successfully.
Вернись в браузер и войди в систему при помощи имени пользователя и пароля, которые ты только что выбрала. Ты должна попасть в панель управления Django.

Перейди к разделу Posts и немного поэкспериментируй с ним. Добавь пять или шесть постов. Не беспокойся о содержании — можешь просто скопировать и вставить текст из этого учебника, чтобы сэкономить время 🙂
Убедись, что выбрала для двух или трёх записей (но не больше) дату публикации. Это пригодится позднее.

Если ты хочешь узнать больше об администрировании Django, то ознакомься с этим разделом официальной документации: https://docs.djangoproject.com/en/1.11/ref/contrib/admin/.
Сейчас, вероятно, подходящий момент, чтобы порадовать себя кружечкой кофе (или чая), а также съесть чего-нибудь для восполнения энергии. Ты только что создала свою первую модель Django и заслужила перерыв!
results matching » «
No results matching » «
Django удалить суперпользователя
Это может быть дубликат, но я не смог найти вопрос нигде, поэтому я продолжу и спрошу:
Есть ли простой способ удалить суперпользователя из терминала, возможно, аналогичный команде createsuperuser Django?
Поделиться Источник 03 ноября 2014 в 11:36
7 ответов
В командной строке нет встроенных элементов, но вы можете легко сделать это из оболочки:
> python manage.py shell $ from django.contrib.auth.models import User $ User.objects.get(username="joebloggs", is_superuser=True).delete()
Поделиться 03 ноября 2014 в 11:42
В случае пользовательской модели будет:
python manage.py shell
from django.contrib.auth import get_user_model model = get_user_model() model.objects.get(username="superjoe", is_superuser=True).delete()
Поделиться 01 июля 2021 в 11:32
Ответ для людей, которые не использовали модель пользователя Django вместо этого, заменил пользовательскую модель пользователя Django.
class ManagerialUser(BaseUserManager): """ This is a manager to perform duties such as CRUD(Create, Read, Update, Delete) """ def create_user(self, email, name, password=None): """ This creates a admin user object """ if not email: raise ValueError("It is mandatory to require an email!") if not name: raise ValueError("Please provide a name:") email = self.normalize_email(email=email) user = self.model(email=email, name=name) """ This will allow us to store our password in our database as a hash """ user.set_password(password) user.save(using=self._db) return user def create_superuser(self, email, name, password): """ This creates a superuser for our Django admin interface""" user = self.create_user(email, name, password) user.is_superuser = True user.is_staff = True user.save(using=self._db) return user class TheUserProfile(AbstractBaseUser, PermissionsMixin): """ This represents a admin User in the system and gives specific permissions to this class. This class wont have staff permissions """ # We do not want any email to be the same in the database. email = models.EmailField(max_length=255, unique=True) name = models.CharField(max_length=255) is_active = models.BooleanField(default=True) is_staff = models.BooleanField(default=False) USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['name',] # CLASS POINTER FOR CLASS MANAGER objects = ManagerialUser() def get_full_name(self): """ This function returns a users full name """ return self.name def get_short_name(self): """ This will return a short name or nickname of the admin user in the system. """ return self.name def __str__(self): """ A dunder string method so we can see a email and or name in the database """ return self.name + ' ' + self.email
Теперь, чтобы удалить зарегистрированный SUPERUSER в нашей системе:
python3 manage.py shell >>>(InteractiveConsole) >>>from yourapp.models import TheUserProfile >>>TheUserProfile.objects.all(email="The email you are looking for", is_superuser=True).delete()
Поделиться 10 сентября 2018 в 00:38
Нет необходимости удалять суперпользователя. просто создайте другого суперпользователя. Вы можете создать другого суперпользователя с тем же именем, что и предыдущий. Я забыл пароль суперпользователя, поэтому создаю другого суперпользователя с тем же именем, что и раньше.
Поделиться 20 июня 2020 в 11:21
Вот простая пользовательская команда управления, которую нужно добавить в myapp/management/commands/deletesuperuser.py :
from django.contrib.auth.models import User from django.core.management.base import BaseCommand from django.core.management.base import CommandError class Command(BaseCommand): def add_arguments(self, parser): parser.add_argument('username', type=str) def handle(self, *args, **options): try: user = User.objects.get(username=options['username'], is_superuser=True) except User.DoesNotExist: raise CommandError("There is no superuser named <>".format(options['username'])) self.stdout.write("-------------------") self.stdout.write("Deleting superuser <>".format(options.get('username'))) user.delete() self.stdout.write("Done.")
Поделиться 18 апреля 2018 в 13:41
Вариант от ответа @Timmy O’Mahony заключается в использовании shell_plus (из django_extensions ) для автоматической идентификации вашей модели User.
python manage.py shell_plus
User.objects.get( username="joebloggs", is_superuser=True ).delete()
Если электронная почта пользователя уникальна, вы также можете удалить пользователя по электронной почте.
User.objects.get( email="joebloggs@email.com", is_superuser=True ).delete()
Поделиться 10 июля 2021 в 05:11
Нет способа удалить его из терминала (к сожалению), но вы можете удалить его напрямую. Просто войдите на страницу администратора, нажмите на пользователя, которого вы хотите удалить, прокрутите вниз и нажмите кнопку «Удалить».
Сброс пароля на админку в django
Что делать если вы забали пароль от админки к django? Есть как минимум 2 решения проблемы.
Первое решение просто поменять пароль на root или другого суперпользователя, которого вы создали при создании базы данных. Для этого входим в manage.py shell
python manager.py shell
>>>from django.contrib.auth.models import User >>>user = User.objects.get( username='root') >>>user.set_password(«password») >>>user.save()
Второй способ еще проще, он также пригодится если вы вместе с паролем забыли и логин от админки, в этом случае можно создать нового суперпользователя, для этого в терминале вводим
python manage.py createsuperuser
И вводим новые данные.
Похожие записи:
- Установка Django на CentOS 7, запуск и тестирование
- Запуск проектов Django в VestaCP
Руководство Django часть 4: административная панель Django
Теперь, когда модели для сайта местной библиотеки созданы, добавим некоторые «настоящие» данные о книгах, используя административную панель Django Admin. Для начала мы покажем, как зарегистрировать в ней модели, потом как войти и создать какие-нибудь данные. В конце статьи мы покажем некоторые способы дальнейшего улучшения вида админ-панели.
| Предусловия: | Сначала завершите: Руководство часть 3: использование моделей. |
|---|---|
| Цель: | Уяснить преимущества и ограничения админ-панели Django, научиться использовать её для создания записей для наших моделей. |
Обзор
Приложение Django admin может использовать ваши модели для автоматического создания части сайта, предназначенной для создания, просмотра, обновления и удаления записей. Это может сэкономить вам много времени в процессе разработки, упрощая тестирование ваших моделей на предмет правильности данных. Оно также может быть полезным для управления данными на стадии публикации, в зависимости от типа веб-сайта. Проект Django рекомендует это приложение только для управления внутренними данными (т.е.для использования администраторами, либо людьми внутри вашей организации), так как модельно-ориентированный подход не обязательно является наилучшим интерфейсом для всех пользователей и раскрывает много лишних подробностей о моделях.
Все необходимые настройки, которые необходимо включить в admin приложение вашего веб-сайта, были сделаны автоматически, когда вы создали каркас проекта ( информацию о необходимых актуальных зависимостях смотрите здесь — Django docs) . В результате все, что необходимо сделать для того, чтобы добавить модели в приложение admin, это зарегистрировать их. В конце этой статьи мы представим краткую демонстрацию того, каким образом можно дополнительно настроить админ-панель для лучшего отображения данные наших моделей.
После регистрации моделей мы покажем как создать нового суперпользователя , войти на сайт от его имени и создать книги, авторов, экземпляры книг и жанры. Это будет полезным для тестирования представлений и шаблонов, которые мы начнём создавать в следующей части руководства.
Регистрация моделей
Вначале откройте файл admin.py в папке приложения (/locallibrary/catalog/admin.py). Пока он выглядит так (заметьте, что он уже содержит импорт django.contrib.admin) :
from django.contrib import admin # Register your models here.
Зарегистрируйте модели путём вставки следующего текста в нижнюю часть этого файла. Этот код просто импортирует модели и затем вызывает admin.site.register для регистрации каждой из них.
from .models import Author, Genre, Book, BookInstance admin.site.register(Book) admin.site.register(Author) admin.site.register(Genre) admin.site.register(BookInstance)
Примечание: Если вы приняли участие в создании модели для представления естественного языка книги (см. обучающую статью о моделях), импортируйте и зарегистрируйте её тоже!
Это самый простой способ регистрации модели или моделей. Админ-панель имеет множество настроек. Мы рассмотрим другие способы регистрации ваших моделей ниже.
Создание суперпользователя
Для того, чтобы войти в админ-панель, нам необходимо иметь учётную запись пользователя со статусом Staff (сотрудники). Для просмотра и создания записей, пользователю также понадобится разрешение для управления всеми нашими объектами. Вы можете создать учётную запись «superuser», которая даёт полный доступ к сайту и все необходимые разрешения, используя manage.py.
Для создания суперпользователя вызовите следующую команду из той же папки, где расположен manage.py. Вас попросят ввести имя пользователя, адрес электронной почты и надёжный пароль.
bashВход в админ-панель и её использование
Для входа в админ-панель откройте ссылку /admin (например http://127.0.0.1:8000/admin) и введите логин и пароль вашего нового суперпользователя (вас перенаправят на login-страницу и потом обратно на /admin после ввода всех деталей).
В этой части сайта отображаются все наши модели, сгруппированные по установленному приложению. Вы можете кликнуть на названии модели, чтобы получить список всех связанных записей, далее можете кликнуть на этих записях, для их редактирования . Также можно непосредственно кликнуть на ссылку Add, расположенную рядом с каждой моделью, чтобы начать создание записи этого типа.
Кликните на ссылке Add справа от Books, чтобы создать новую книгу (появится диалоговое окно как на картинке внизу). Заметьте, что заголовок каждого поля - это тип используемого виджета, и
help_text(если есть) совпадает со значением, которое вы указали в модели.Введите значение для полей. Вы можете создавать новых авторов или жанры, нажимая на значок "+ ", расположенный рядом с соответствующим полем (или выберите существующее значение из списков, если вы уже создали их). Когда вы закончили, нажмите на SAVE,Save and add another, или Save and continue editing, чтобы сохранить записи.
Примечание: А сейчас, хотелось бы, чтобы вы добавили несколько книг, авторов и жанров (например, Фэнтези) в ваше приложение. Удостоверьтесь, что каждый автор и жанр включает пару различных книг (позже, когда мы реализуем представления "list" и "detail", это сделает их более интересными).
После того, когда книги добавлены, для перехода на главную страницу админ-панели кликните на ссылке Home в верхней части страницы. Потом кликните на ссылке Books для отображения текущего списка книг (или на одной из других ссылок, чтобы увидеть список соответствующей модели). После добавления нескольких книг список может выглядеть наподобие скриншота ниже. Отображается название каждой из книг. Его возвращает метод
__str__()в модели Book, созданной в предыдущей статье.
Для удаления книги из этого списка выберите чекбокс рядом с ней и действие delete. из выпадающего списка Action, а затем нажмите кнопку Go. Также можно добавить новую книгу, нажав на кнопку ADD BOOK.
Вы можете редактировать книгу, кликнув по ссылке с её названием. Страница редактирования книги, приведённая ниже, практически идентична странице добавления новой книги. Основные отличия - это заголовок страницы (Change book) и наличие кнопок Delete, HISTORY и VIEW ON SITE. Последняя присутствует, так как мы определили метод
get_absolute_url()в нашей модели.
Теперь перейдите назад на страницу Home (используя ссылку Home в навигационной цепочке вверху страницы) и просмотрите списки Author и Genre. В них уже должно быть несколько элементов, созданных при добавлении новых книг. Если хотите, добавьте ещё.
Однако у вас не будет ни одного экземпляра книги, потому что они не создаются из модели
Book(хотя можно создать книгу из моделиBookInstance— такова природа поляForeignKey). Для отображения страницы Add book instance (см. рисунок ниже) вернитесь на страницу Home и нажмите кнопку Add. Обратите внимание на длинный уникальный Id для идентификации конкретного экземпляра книги в библиотеке.
Создайте несколько экземпляров для каждой из ваших книг. Установите статус Available (доступен) для некоторых экземпляров и On loan (выдан) для остальных. Если статус экземпляра notAvailable (недоступен), то также установите дату возврата (Due back).
Вот и все! Вы изучили как запустить и использовать админ-панель. Также были созданы записи для
Book,BookInstance,GenreиAuthor, которые можно будет использовать после создания наших собственных представлений и шаблонов."Продвинутая" конфигурация
Django выполняет неплохую работу по созданию базовой админ-панели используя информацию из зарегистрированных моделей:
- каждая модель имеет список записей, каждая из которых идентифицируется строкой, создаваемой методом
__str__()модели, и связана с представлением для её редактирования. По умолчанию, в верхней части этого представления находится меню действий, которое может быть использовано для удаления нескольких записей за раз- Формы для редактирования и добавления записей содержат все поля модели, которые расположены вертикально в порядке их объявления в модели.
Можно настроить интерфейс пользователя для упрощения его использования. Некоторые доступные настройки:
- List views:
- добавление дополнительных отображаемых полей или информации для каждой записи.
- добавление фильтров для отбора записей по разным критериям (например, статус выдачи книги).
- добавление дополнительных вариантов выбора в меню действий и места расположения этого меню на форме.
- Detail views
- выбор отображаемых полей, их порядка, группирования и т.д.
- добавление связанных полей к записи (например, возможности добавления и редактирования записей книг при создании записи автора).
В этом разделе рассмотрим некоторые изменения для совершенствования интерфейса пользователя нашей местной библиотеки, а именно: добавление дополнительной информации в списки моделей
BookиAuthor, а также улучшение расположения элементов соответствующих представлений редактирования. Пользовательский интерфейс моделейLanguageandGenreизменять не будем, так как это не даст заметного улучшения, поскольку он содержит только по одному полю!Полное руководство по всем возможным вариантам настройки админ-панели можно найти в The Django Admin site (документация Django).
Регистрация класса ModelAdmin
Для изменения отображения модели в пользовательском интерфейсе админ-панели, необходимо определить класс ModelAdmin (он описывает расположение элементов интерфейса, где Model - наименование модели) и зарегистрировать его для использования с этой моделью.
Давайте начнём с модели Author. Откройте файл admin.py в каталоге приложения (/locallibrary/catalog/admin.py). Закомментируйте исходную регистрацию (используя префикс #) этой модели:
js.site.register(Author)Теперь добавьте новый класс AuthorAdmin и зарегистрируйте его как показано ниже:
# Define the admin class class AuthorAdmin(admin.ModelAdmin): pass # Register the admin class with the associated model admin.site.register(Author, AuthorAdmin)Сейчас мы добавим классы ModelAdmin для моделей Book , и BookInstance . Нам снова нужно закомментировать исходную регистрацию:
.site.register(Book) #admin.site.register(BookInstance)




