Як скинути пароль адміністратора Django?


451

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

І чи можна зробити звичайного користувача адміністратором, а потім видалити статус адміністратора?

Відповіді:


785
python manage.py changepassword <user_name>

див. документи


7
щойно зрозумів, що ти сказав, що ти забув ім'я користувача ... "адміністратор" - це ім'я користувача у моїй відповіді.
JamesO

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
Aaron McMillin

122

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

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 Manag.py changepassword ім'я_користувача

Приклад: -

python manage.py changepassword mickey

11

для створення користувача спочатку слід запустити нову установкуpython manage.py createsuperuser . Здається, що для входу в адміністратор немає пароля користувача за замовчуванням.


9

Один з найкращих способів отримати ім’я користувача та пароль - це їх перегляд та оновлення. Модель користувача пропонує ідеальний спосіб зробити це.

У цьому випадку я використовую Django 1.9

  1. Перейдіть до кореневого каталогу i, e. де ви знаходитесь у файлі "Manag.py", використовуючи консоль або інший додаток, наприклад, Git.
  2. Отримайте оболонку Python за допомогою команди "python management.py shell".
  3. Імпортуйте модель користувача, ввівши таку команду "з імпортувати користувача django.contrib.auth.models"
  4. Отримайте всіх користувачів, ввівши таку команду "users = User.objects.all ()"
  5. Роздрукувати список користувачів Для користувачів Python 2 використовується команда "друкувати користувачів" Для користувачів Python 3 використовується команда "друкувати (користувачі)" Першим користувачем зазвичай є адміністратор.

  6. Виберіть користувача, якому ви хочете змінити свій пароль, наприклад

    "user = users[0]"

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

    user.set_password('name_of_the_new_password_for_user_selected')

  8. Збережіть новий пароль

    "user.save()"

Запустіть сервер та увійдіть, використовуючи ім’я користувача та оновлений пароль.


Перевага цього методу в manage.py changepasswordтому, що ви не обмежуєтесь паролями, які ви можете або не можете використовувати - не більше схожих на лайно користувача. (Це в моєму середовищі розробників. Я не захищаю більш слабкі паролі. Ви завжди повинні використовувати надійні паролі у
продажі

5

Ви також можете відповісти на запитання про налаштування неправильно та мати нульовий склад персоналу. У такому випадку перейдіть до постгресів:

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>

Або (який розширюється на кілька відповідей, але працює для будь-якої розширеної моделі користувача), використовуючи оболонку 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 Userтоді User.objects.get(username='username')може призвести до наступної помилки:

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

4

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


4

Ви можете спробувати це:

1.Змініть пароль Superuser без консолі

python manage.py changepassword <username>

2.Змініть пароль Superuser через консоль

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


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 management.py createuperuser". Увійдіть як новий суперкористувач. Клацніть на посилання "користувачі". Потім натисніть на користувача, якого потрібно видалити. натисніть на видалити користувача в кінці сторінки форми.

Примітка. Вищенаведений процес внесе зміни до журналів активності, зроблених саме цим користувачем.



1

використання

python management.py дампдати

потім подивіться в кінці ви знайдете ім’я користувача


0

Найкращий спосіб - просто зайти до терміналу і набрати

python manage.py createsuperuser

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


0

Я думаю, кращий спосіб У командному рядку

python Manag.py створює перетворювач


0

Це дуже просто, просто введіть цю команду в yout командному рядку

python Manag.py змінити пароль yourusername


-1

Ще один спосіб отримати ім’я користувача (і більшість інформації) - це безпосередньо отримати доступ до бази даних та прочитати інформацію з таблиць.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.