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

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

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


person IamH1kc    schedule 15.06.2011    source источник
comment
Пожалуйста, не задавайте два разных вопроса в одном посте.   -  person Yaroslav Nikitenko    schedule 25.11.2020


Ответы (23)


python manage.py changepassword <user_name>

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

person JamesO    schedule 15.06.2011
comment
только что понял, что вы сказали, что забыли имя пользователя ... 'admin' - имя пользователя в моем ответе, тогда не сильно поможет! - person JamesO; 15.06.2011
comment
@ user794916 Довольно странный выбор, если вы не помните имя пользователя. :-) - person DrTyrsa; 15.06.2011
comment
Вы можете изменить имя пользователя с admin на другое правильное имя пользователя. : D - person mxi1; 04.03.2015
comment
Вы можете открыть базу данных sqlite с помощью стороннего приложения и проверить имена пользователей (не пароли) - person Vassilis; 22.08.2016
comment
Джанго лучший. все так просто - person DMTintner; 16.03.2017
comment
Если вы забыли имя пользователя, вы можете сделать manage.py createsuperuser, чтобы создать второго суперпользователя, а затем просмотреть список пользователей, чтобы найти исходный. Затем войдите в систему как исходный и удалите нового суперпользователя. - person shacker; 14.05.2018
comment
Если вы просто наберете команду, как показано в этом ответе, без указания имени пользователя, команда позволит вам изменить пароль для текущего пользователя системы и отобразить его при этом. - person donyd; 16.03.2021

  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()
person DrTyrsa    schedule 15.06.2011
comment
Если возможно, как это сделать? - person IamH1kc; 15.06.2011
comment
При таком подходе кажется, что пользователь не может получить доступ к администратору django - person keul; 27.07.2016
comment
@LucaFabbri вам также необходимо установить user.is_staff = True - person Aaron McMillin; 01.11.2017

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

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

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

person FallenAngel    schedule 15.06.2011
comment
pip install django-extensions, добавьте его в installed apps и запустите ./manage.py shell_plus. Будет доступен класс User, и вы сможете password-change. - person Timo; 02.03.2018
comment
Этот метод позволяет пользователю установить любой пароль без какой-либо проверки. Таким образом, вы можете установить очень простой пароль (только для тестовых целей), что не позволяет принятый метод ответа. - person Gautam J; 01.02.2020

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

person Aldarund    schedule 15.06.2011

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

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

Пример :-

python manage.py changepassword mickey
person anand24    schedule 13.03.2016

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

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

  1. Перейдите в корневой каталог i, e. где находится файл manage.py с помощью консоли или другого приложения, например Git.

  2. Получите оболочку Python с помощью команды python manage.py shell.

  3. Импортируйте модель пользователя, введя следующую команду из 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()"

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

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

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

person Kiran P.    schedule 12.09.2016

Это можно сделать двумя способами:

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

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

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

(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='[email protected]')
>>> user.set_password('new password')
>>> user.save()
>>> exit()

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

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

AttributeError: Manager isn't available; 'auth.User' has been swapped for 'users.User'
person Micheal J. Roberts    schedule 30.07.2019
comment
Этот ответ - хороший способ установить общий / короткий пароль для существующего пользователя. - person Gal Silberman; 12.11.2020

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

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

python manage.py changepassword <username>

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

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

person Mr Singh    schedule 30.01.2018
comment
Использование скриншотов вместо написанного кода - очень плохая практика. Люди не могут скопировать и вставить ваш код для тестирования, и он недоступен для поиска по сайту - person FallenAngel; 17.03.2020

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

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

person rapid2share    schedule 25.01.2014

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

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

python manage.py createsuperuser <username>

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

python manage.py changepassword <username>

OR

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()
person Saurabh Chandra Patel    schedule 23.07.2019

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

person user1330974    schedule 14.06.2015

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

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

person Ishan Dixit    schedule 03.01.2018

использовать

python manage.py dumpdata

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

person donald duck    schedule 25.04.2019

Просто введите эту команду в свою командную строку:

python manage.py changepassword yourusername
person Shrey    schedule 14.04.2020

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

python manage.py createsuperuser

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

person CAP.tech    schedule 04.09.2019
comment
Пожалуйста, не следуйте этому решению. - person Gal Silberman; 12.11.2020

Я думаю, лучший способ в командной строке

python manage.py создает суперпользователя

person nevriye gül    schedule 08.12.2019

Если в /admin/ website требуется ссылка reset_password, это можно сделать: https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#adding-a-password-reset-feature

person obotezat    schedule 10.06.2021

Если вы используете пользовательскую модель

(venv)your_prj $ ./manage.py shell
>>> from customusers.models import CustomUser
>>> CustomUser.objects.filter(is_superuser=True)
>>> user = CustomUser.objects.get(email="[email protected]")
>>> user.set_password('@NewPwd')
>>> user.save()
>>> exit()
person 7guyo    schedule 03.07.2021

В дополнение к ответу @JamesO, в котором говорится об использовании

python manage.py changepassword [username]

if you don't remember your username :

1- находясь в основном каталоге вашего проекта, обращайтесь к базе данных (я использую sqlite3):

sqlite3 db.sqlite3

2- перечислить содержимое auth_user таблицы

SELECT * FROM auth_user ;

3- найдите пользователя с is_superuser = 1, в моем случае это снимок экрана с выводом команды (I недостаточно очков репутации)

person Mossab    schedule 17.07.2021

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

person Mutken    schedule 30.01.2020