Перейти к содержимому

Как удалить суперпользователя в django

  • автор:

Администрирование 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.

Администрирование Django

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

Убедись, что выбрала для двух или трёх записей (но не больше) дату публикации. Это пригодится позднее.

Администрирование Django

Если ты хочешь узнать больше об администрировании Django, то ознакомься с этим разделом официальной документации: https://docs.djangoproject.com/en/1.11/ref/contrib/admin/.

Сейчас, вероятно, подходящий момент, чтобы порадовать себя кружечкой кофе (или чая), а также съесть чего-нибудь для восполнения энергии. Ты только что создала свою первую модель Django и заслужила перерыв!

results matching » «

No results matching » «

Django delete superuser

This may be a duplicate, but I couldn’t find the question anywhere, so I’ll go ahead and ask: Is there a simple way to delete a superuser from the terminal, perhaps analogous to Django’s createsuperuser command?

asked Nov 3, 2014 at 11:36
Quentin Donnellan Quentin Donnellan
2,717 1 1 gold badge 18 18 silver badges 24 24 bronze badges
Amazingly — it looks like it’s not a duplicate. I did a quick check.
Nov 3, 2014 at 12:54

7 Answers 7

There’s no built in command but you can easily do this from the shell:

> python manage.py shell $ from django.contrib.auth.models import User $ User.objects.get(username="joebloggs", is_superuser=True).delete() 

answered Nov 3, 2014 at 11:42
Timmy O’Mahony Timmy O’Mahony
53.3k 18 18 gold badges 155 155 silver badges 177 177 bronze badges
Sounds like a silly question, but why! is there no in built command for that?
Apr 29, 2015 at 1:53
it isnt a silly question, let me know if you find an answer to that
– user4988789
Jul 8, 2015 at 5:31

In Django 1.11, it looks like this is still accurate except the first line should be python manage.py shell .

Jun 5, 2017 at 13:46

In the case of a custom user model it would be:

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() 

answered Jul 1, 2021 at 11:32
614 9 9 silver badges 26 26 bronze badges

An answer for people who did not use Django’s User model instead substituted a Django custom user model.

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 

Now to delete a registered SUPERUSER in our system:

python3 manage.py shell >>>(InteractiveConsole) >>>from yourapp.models import TheUserProfile >>>TheUserProfile.objects.all(email="The email you are looking for", is_superuser=True).delete() 

Сброс пароля на админку в 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

И вводим новые данные.

Похожие записи:

  1. Установка Django на CentOS 7, запуск и тестирование
  2. Запуск проектов Django в VestaCP

Django Admin — Python: Разработка на фреймворке Django

Создание раздела администратора, через который пользователи смогут добавлять, изменять и удалять данные — утомительная работа. Она не требует творческого подхода. По этой причине Django полностью автоматизирует создание раздела администратора на основе моделей.

Django разрабатывался с упором на разделение сайта на две части: редактирование контента и просмотр контента. В этом уроке мы разберем работу с Django Admin, который администраторы сайта используют, чтобы добавлять контент на сайт. И он будет отображаться для всех посетителей сайта. Django Admin не предназначен для использования обычными посетителями, это место для управления сайтом.

Создание суперпользователя

Если мы посмотрим на наш главный файл urls.py, то увидим, что по умолчанию раздел администратора у нас подключен:

urlpatterns = [ # . path('admin/', admin.site.urls), ] 

Если перейти по данному адресу, откроется страница для входа в раздел администратора:

Чтобы войти в раздел администратора, нам необходимо иметь учетную запись пользователя со статусом Staff. Мы можем создать учетную запись superuser, у которой есть полный доступ к сайту и все необходимые разрешения. Для этого выполним следующую команду и заполним информацию о себе:

********** Password (again): ********** Superuser created successfully. 

Теперь мы можем зайти в админку под созданной учетной записью:

В этом разделе мы видим все наши модели, которые сгруппированы по установленному приложению. Пока мы видим несколько типов редактируемого контента: группы и пользователи. Они предоставляются django.contrib.auth платформой аутентификации, которая поставляется Django.

Регистрация моделей

Чтобы добавить в админку наши модели для редактирования, нам нужно отредактировать файл admin.py. Он расположен внутри приложения:

from django.contrib import admin from .models import Article admin.site.register(Article) 

Мы зарегистрировали нашу модель в админке, и при обновлении страницы у нас появится новый раздел:

Теперь через новый раздел мы можем управлять данными в модели: добавлять, редактировать и удалять. Но если откроем список статей, увидим следующие названия:

Такие названия задаются методом __str__ , который по умолчанию состоит из названия класса и id записи в базе данных. Чтобы привести данный список к более читаемому и понятному виду, нам нужно в классе модели переопределить данный метод:

class Article(models.Model): name = models.CharField(max_length=200) body = models.TextField() created_at = models.DateTimeField(auto_now_add=True) def __str__(self): return self.name 

В данном примере мы указываем, что в качестве названия объекта нужно возвращать значение поля name . Так в качестве названия мы можем использовать любые поля, их комбинации или брать поля из связанных моделей. Теперь наш список будет выглядеть более читаемым для человека:

Настройка отображения

Возможности Django Admin на этом не заканчиваются. Например, при помощи дополнительных параметров можно производить фильтрации списков по параметрам, ограничивать список выдачи по авторам, организовывать поиск.

Попробуем добавить поисковую форму, чтобы можно было найти нужную статью по названию. Для этого изменим содержание файла admin.py:

from django.contrib import admin from .models import Article class ArticleAdmin(admin.ModelAdmin): search_fields = ['name', 'body'] admin.site.register(Article, ArticleAdmin) 

Мы добавили класс, который описывает дополнительные свойства для отображения и работы с нашей моделью в разделе администратора. В данном случае мы указали поле search_fields , в которое передали списком названия полей. По ним будет осуществляться поиск. Всю остальную работу по добавлению поля для ввода поискового запроса, контекстному поиску по выбранным полям на себя берет Django Admin:

Мы можем улучшить читаемость нашего кода, если воспользуемся декоратором @admin.register() . Он позволяет связать модель с классом и провести регистрацию модели в разделе администратора:

from django.contrib import admin from .models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): search_fields = ['name', 'body'] 

Еще добавим отображение в списке статей даты публикации и фильтрацию по данному полю:

from django.contrib import admin from django.contrib.admin import DateFieldListFilter from .models import Article @admin.register(Article) class ArticleAdmin(admin.ModelAdmin): list_display = ('name', 'timestamp') # Перечисляем поля, отображаемые в таблице списка статей search_fields = ['name', 'body'] list_filter = (('timestamp', DateFieldListFilter),) # Перечисляем поля для фильтрации 

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов

Наши выпускники работают в компаниях:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *