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


452

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

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

Ответы:


787
python manage.py changepassword <user_name>

см документы


7
только что понял, что вы сказали, что вы забыли имя пользователя ... admin в качестве имени пользователя в моем ответе не сильно поможет!
Джеймс

8
@ user794916 Это довольно странный выбор, если вы не помните имя пользователя. :-)
DrTyrsa

1
Вы можете изменить имя пользователя с «admin» на другое имя пользователя. : D
mxi1

4
Джанго самый лучший. все так просто
DMTintner

5
Если вы забыли имя пользователя, вы можете manage.py createsuperuserсоздать второго суперпользователя, а затем просмотреть список пользователей, чтобы найти оригинальное. Затем войдите в систему как оригинальный и удалите нового суперпользователя.
шейкер

173
  1. python manage.py createsuperuser создаст другого суперпользователя, вы сможете войти в систему администратора и запомнить ваше имя пользователя.
  2. Да, почему бы и нет.

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

from django.contrib.auth.models import User
user = User.objects.get(username='normaluser')
user.is_superuser = True
user.save()

Если это возможно, как это сделать?
IamH1kc

При таком подходе кажется, что пользователь не может получить доступ к администратору django
keul

3
@LucaFabbri вам также нужно установитьuser.is_staff = True
Аарон Макмиллин

123

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

python manage.py shell

затем используйте следующий скрипт в оболочке

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

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

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

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


12
User.objects.filter(is_superuser=True)
DrTyrsa

pip install django-extensions, добавить его installed appsи запустить ./manage.py shell_plus. UserКласс будет доступен и вы можете password-change.
Тимо

Этот метод позволяет пользователю установить любой пароль без какой-либо проверки. Таким образом, вы можете установить очень простой пароль (только для целей тестирования), который не допускается принятым методом ответа.
Гаутам J


14

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

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

Пример :-

python manage.py changepassword mickey

11

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


9

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

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

  1. Перейдите в корневой каталог i, e. где вы управляете файлом .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()"

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


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

5

Возможно, вы также неправильно ответили на вопрос о настройке и у вас ноль сотрудников. В этом случае отправляйтесь в 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;

5

Два способа сделать это:

Команда changepassword управления :

(env) $ python manage.py changepassword <username>

Или (который расширяет несколько ответов, но работает для любой расширенной модели User), используя оболочку django-admin следующим образом:

(env) $ python manage.py shell

Это должно вызвать командную строку оболочки следующим образом:

Python 3.7.2 (default, Mar 27 2019, 08:44:46) 
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>>

Тогда вы хотели бы следующее:

>>> from django.contrib.auth import get_user_model
>>> User = get_user_model()
>>> user = User.objects.get(username='admin@hug.com')
>>> user.set_password('new password')
>>> user.save()
>>> exit()

NB. Почему я ответил на этот вопрос этим ответом?

Потому что, как уже упоминалось, User = get_user_model()будет работать для ваших собственных пользовательских Userмоделей. Использование from django.contrib.auth.models import Userthen User.objects.get(username='username')может вызвать следующую ошибку:

AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'

4

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


4

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

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

python manage.py changepassword <username>

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

введите описание изображения здесь введите описание изображения здесь


1
Использование скриншотов вместо написанного кода - очень плохая практика. Poeple не может скопировать и вставить ваш код для тестирования, и он не доступен для поиска по сайту
FallenAngel

3

В случае, если вы не знаете имена пользователей, созданные здесь. Вы можете получить пользователей, как описано выше @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

3

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

python manage.py createsuperuser <username>

и для пароля есть команда CLI changepassword для django, чтобы изменить пароль пользователя

python manage.py changepassword <username>

ИЛИ

django-admin changepassword <username>

ИЛИ Запустите этот код в Django env

from django.contrib.auth.models import User
u = User.objects.get(username='john')
u.set_password('new password')
u.save()

2

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


2

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

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



1

использование

python manage.py dumpdata

затем посмотрите в конце вы найдете имя пользователя


0

Лучший способ - просто зайти в свой терминал и набрать

python manage.py createsuperuser

и еще раз введите другой пароль и имя пользователя, но в большинстве случаев вы потеряете часть своего профиля, созданного вами ранее.



0

Это очень просто, просто введите эту команду в командной строке yout

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


-1

Другой способ получить имя пользователя (и большую часть информации) - получить прямой доступ к базе данных и прочитать информацию из таблиц.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.