Я использую Django (версия 1.3) и забыл имя пользователя и пароль администратора. Как reset оба?
И можно ли сделать обычного пользователя администратором, а затем удалить статус администратора?
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()
и вы установите новый пароль (:
User.objects.filter(is_superuser=True)
pip install django-extensions
, добавьте его в installed apps
и запустите ./manage.py shell_plus
. Класс User
будет доступен, и вы можете password-change
.
Вы можете создать нового суперпользователя с помощью createsuperuser
.
новая настройка должна сначала запустить python manage.py createsuperuser
, чтобы создать пользователя. Похоже, что пароль администратора по умолчанию отсутствует для входа в админ.
Это очень хороший вопрос.
python manage.py changepassword имя_пользователя
Пример: -
python manage.py changepassword mickey
Один из лучших способов восстановить имя пользователя и пароль - просмотреть и обновить их. Модель пользователя предоставляет идеальный способ сделать это.
Распечатайте список пользователей. Для пользователей Python 2 используйте команду "print users". Для пользователей Python 3 используйте команду "print (users)". Первым пользователем обычно является администратор.
Выберите пользователя, которого вы хотите изменить свой пароль, например
"user = users[0]"
Установить пароль
user.set_password('name_of_the_new_password_for_user_selected')
Сохранить новый пароль
"user.save()"
Запустите сервер и войдите в систему, используя имя пользователя и обновленный пароль.
manage.py changepassword
заключается в том, что вы не ограничены тем, какие пароли вы можете или не можете использовать - больше не похоже на дерьмо имени пользователя. (Это в моей среде разработки. Я не защищаю более слабые пароли. Вы всегда должны использовать надежные пароли в Prod.)
Возможно, вы также неправильно ответили на установочный вопрос и имели нулевых сотрудников. В этом случае отправляйтесь в 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
Создайте нового суперпользователя с помощью команды "python manage.py createuperuser". Войдите в систему как новый супер пользователь. Нажмите на ссылку "пользователи". Затем нажмите на пользователя, которого хотите удалить. нажмите на удалить пользователя в конце страницы формы.
Примечание. Приведенный выше процесс внесет изменения в журналы активности, выполненные этим конкретным пользователем.
Еще одна вещь, которую стоит отметить, - установить статус пользователя is_staff
как активный. По крайней мере, это заставляет меня работать. Для более подробной информации я создал еще один superuser
, как описано выше. Затем перейдите в таблицу базы данных auth_user
и найдите это имя пользователя, чтобы убедиться, что его флаг is_staff
установлен на 1
. Это позволило мне войти на сайт admin
.
Я предпочитаю второй метод, упомянутый @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 changepassword