Я использую Django (версия 1.3) и забыл имя пользователя и пароль администратора. Как reset оба?
И можно ли сделать обычного пользователя администратором, а затем удалить статус администратора?
Я использую Django (версия 1.3) и забыл имя пользователя и пароль администратора. Как reset оба?
И можно ли сделать обычного пользователя администратором, а затем удалить статус администратора?
python manage.py changepassword <user_name>
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()
Вы можете попробовать через консоль:
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()
и вы установите новый пароль (:
Вы можете создать нового суперпользователя с помощью createsuperuser
.
Это очень хороший вопрос.
python manage.py changepassword имя_пользователя
Пример: -
python manage.py changepassword mickey
новая настройка должна сначала запустить python manage.py createsuperuser
, чтобы создать пользователя. Похоже, что пароль администратора по умолчанию отсутствует для входа в админ.
Один из лучших способов восстановить имя пользователя и пароль - просмотреть и обновить их. Модель пользователя предоставляет идеальный способ сделать это.
Распечатайте список пользователей. Для пользователей Python 2 используйте команду "print users". Для пользователей Python 3 используйте команду "print (users)". Первым пользователем обычно является администратор.
Выберите пользователя, которого вы хотите изменить свой пароль, например
"user = users[0]"
Установить пароль
user.set_password('name_of_the_new_password_for_user_selected')
Сохранить новый пароль
"user.save()"
Запустите сервер и войдите в систему, используя имя пользователя и обновленный пароль.
Возможно, вы также неправильно ответили на установочный вопрос и имели нулевых сотрудников. В этом случае отправляйтесь в 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;
Вы можете попробовать это:
1. Изменить пароль суперпользователя без консоли
python manage.py changepassword <username>
2. Измените пароль суперпользователя через консоль
Если вы забыли создать администратора, сначала создайте его с помощью команды createsuperuser
на manage.py
, затем измените пароль.
Если вы не знаете имена пользователей, созданные здесь. Вы можете получить пользователей, как описано выше @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
Еще одна вещь, которую стоит отметить, - установить статус пользователя is_staff
как активный. По крайней мере, это заставляет меня работать. Для более подробной информации я создал еще один superuser
, как описано выше. Затем перейдите в таблицу базы данных auth_user
и найдите это имя пользователя, чтобы убедиться, что его флаг is_staff
установлен на 1
. Это позволило мне войти на сайт admin
.
Создайте нового суперпользователя с помощью команды "python manage.py createuperuser". Войдите в систему как новый супер пользователь. Нажмите на ссылку "пользователи". Затем нажмите на пользователя, которого хотите удалить. нажмите на удалить пользователя в конце страницы формы.
Примечание. Приведенный выше процесс внесет изменения в журналы активности, выполненные этим конкретным пользователем.
имя пользователя python manage.py changepassword
Я предпочитаю второй метод, упомянутый @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()
использование
python manage.py dumpdata
затем посмотрите в конце вы найдете имя пользователя
если вы забыли своего администратора, то вам нужно создать нового пользователя с помощью
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()
Два способа сделать это:
Команда управления changepassword
management command:
(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='[email protected]')
>>> user.is_staff = True
>>> user.save()
>>> exit()
Н.Б. Почему я ответил на этот вопрос таким ответом?
Потому что, как уже упоминалось, 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'
Лучший способ - просто зайти в свой терминал и набрать
python manage.py createsuperuser
и снова введите другой пароль и имя пользователя но в большинстве случаев вы потеряете часть своего профиля, созданного вами ранее.