Как сбросить пароль администратора Django?

326

Я использую Django (версия 1.3) и забыл имя пользователя и пароль администратора. Как reset оба?

И можно ли сделать обычного пользователя администратором, а затем удалить статус администратора?

Теги:
admin

15 ответов

611
Лучший ответ
manage.py changepassword <user_name>

см. документы

  • 7
    только что понял, что вы сказали, что вы забыли имя пользователя ... 'admin', будучи именем пользователя в моем ответе, тогда не сильно поможет!
  • 8
    @ user794916 Это довольно странный выбор, если вы не помните имя пользователя. :-)
Показать ещё 6 комментариев
141
  • python manage.py createsuperuser создаст еще один суперпользователь, вы сможете войти в админ и сохранить свое имя пользователя.
  • Да, почему бы и нет.

Чтобы предоставить обычные пользовательские привилегии, откройте оболочку с помощью python manage.py shell и попробуйте:

from django.contrib.auth.models import User
user = User.objects.get(username='normaluser')
user.is_superuser = True
user.save()
  • 0
    Если это возможно, как это сделать?
  • 0
    @ user794916 Вы можете редактировать любого пользователя в админке Django.
Показать ещё 2 комментария
91

Вы можете попробовать через консоль:

python manage.py shell

то используйте script в оболочке

from django.contrib.auth.models import User
User.objects.filter(is_superuser=True)

отобразит список всех суперпользователей в системе. если вы узнаете имя пользователя yur из списка:

usr = User.objects.get(username='your username')
usr.set_password('raw password')
usr.save()

и вы установите новый пароль (:

  • 11
    User.objects.filter(is_superuser=True)
  • 0
    pip install django-extensions , добавьте его в installed apps и запустите ./manage.py shell_plus . Класс User будет доступен, и вы можете password-change .
19

Вы можете создать нового суперпользователя с помощью createsuperuser.

9

новая настройка должна сначала запустить python manage.py createsuperuser, чтобы создать пользователя. Похоже, что пароль администратора по умолчанию отсутствует для входа в админ.

9

Это очень хороший вопрос.

python manage.py changepassword имя_пользователя

Пример: -

python manage.py changepassword mickey
5

Один из лучших способов восстановить имя пользователя и пароль - просмотреть и обновить их. Модель пользователя предоставляет идеальный способ сделать это.

В этом случае я использую Django 1.9

  1. Перейдите в корневой каталог i, e. где вы управляете файлом "py.py ", используя консоль или другое приложение, такое как Git.
  2. Получите оболочку Python с помощью команды "python manage.py shell".
  3. Импортируйте пользовательскую модель, введя следующую команду "from django.contrib.auth.models import User"
  4. Чтобы получить всех пользователей, введите следующую команду "users = User.objects.all()"
  5. Распечатайте список пользователей. Для пользователей Python 2 используйте команду "print users". Для пользователей Python 3 используйте команду "print (users)". Первым пользователем обычно является администратор.

  6. Выберите пользователя, которого вы хотите изменить свой пароль, например

    "user = users[0]"

  7. Установить пароль

    user.set_password('name_of_the_new_password_for_user_selected')

  8. Сохранить новый пароль

    "user.save()"

Запустите сервер и войдите в систему, используя имя пользователя и обновленный пароль.

  • 0
    Преимущество этого метода по сравнению с manage.py changepassword заключается в том, что вы не ограничены тем, какие пароли вы можете или не можете использовать - больше не похоже на дерьмо имени пользователя. (Это в моей среде разработки. Я не защищаю более слабые пароли. Вы всегда должны использовать надежные пароли в Prod.)
  • 0
    Это работает, большое спасибо.
4

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

obvioustest=# \c [yourdatabasename]
obvioustest=# \x
obvioustest=# select * from auth_user;
-[ RECORD 1 ]+-------------
id           | 1
is_superuser | f
is_staff     | f
...

Чтобы исправить, отредактируйте напрямую:

update auth_user set is_staff='true' where id=1;
3

Вы можете попробовать это:

1. Изменить пароль суперпользователя без консоли

python manage.py changepassword <username>

2. Измените пароль суперпользователя через консоль

Изображение 913 Изображение 914

3

Если вы забыли создать администратора, сначала создайте его с помощью команды createsuperuser на manage.py, затем измените пароль.

2

Если вы не знаете имена пользователей, созданные здесь. Вы можете получить пользователей, как описано выше @FallenAngel.

python manage.py shell 
from django.contrib.auth.models import User
usrs = User.objects.filter(is_superuser=True)
#identify the user
your_user = usrs.filter(username="yourusername")[0]
#youruser = usrs.get(username="yourusername")
#then set the password

Однако, если вы создали свою независимую модель пользователя. Простой случай, когда вы хотите использовать электронную почту в качестве имени пользователя вместо имени пользователя по умолчанию. В этом случае ваша модель пользователя живет где-то, например, your_accounts_app.models, тогда это решение не будет работать. В этом случае вместо этого вы можете использовать метод get_user_model

from django.contrib.auth import get_user_model 
super_users = get_user_model().objects.filter(is_superuser=True)
#proceed to get identify your user
# and set their user password
1

Создайте нового суперпользователя с помощью команды "python manage.py createuperuser". Войдите в систему как новый супер пользователь. Нажмите на ссылку "пользователи". Затем нажмите на пользователя, которого хотите удалить. нажмите на удалить пользователя в конце страницы формы.

Примечание. Приведенный выше процесс внесет изменения в журналы активности, выполненные этим конкретным пользователем.

1

Еще одна вещь, которую стоит отметить, - установить статус пользователя is_staff как активный. По крайней мере, это заставляет меня работать. Для более подробной информации я создал еще один superuser, как описано выше. Затем перейдите в таблицу базы данных auth_user и найдите это имя пользователя, чтобы убедиться, что его флаг is_staff установлен на 1. Это позволило мне войти на сайт admin.

0

Я предпочитаю второй метод, упомянутый @unlockme

>>> python manage.py shell
>>> from django.contrib.auth import get_user_model
>>> users = get_user_model().objects.all()
>>> print(users)
<QuerySet [<CustomUser: admin>, <CustomUser: user1>, <CustomUser: user2>]>
>>> user = users[0]
>>> user.set_password('put_your_new_password_here')
>>> user.save()
>>> exit()
0

имя пользователя python manage.py changepassword

Ещё вопросы

Сообщество Overcoder
Наверх
Меню