Я использую Django (версия 1.3) и забыл имя пользователя и пароль администратора. Как сбросить оба?
А можно ли сделать обычного пользователя админом, а потом убрать статус админа?
Я использую Django (версия 1.3) и забыл имя пользователя и пароль администратора. Как сбросить оба?
А можно ли сделать обычного пользователя админом, а потом убрать статус админа?
python manage.py changepassword <user_name>
manage.py createsuperuser
, чтобы создать второго суперпользователя, а затем просмотреть список пользователей, чтобы найти исходный. Затем войдите в систему как исходный и удалите нового суперпользователя.
- person shacker; 14.05.2018
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()
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()
и вы устанавливаете новый пароль (:
pip install django-extensions
, добавьте его в installed apps
и запустите ./manage.py shell_plus
. Будет доступен класс User
, и вы сможете password-change
.
- person Timo; 02.03.2018
Вы можете создать нового суперпользователя с помощью команды createsuperuser
.
Это очень хороший вопрос.
python manage.py changepassword имя_пользователя
Пример :-
python manage.py changepassword mickey
Один из лучших способов получить имя пользователя и пароль - это просмотреть и обновить их. Модель пользователя предоставляет идеальный способ сделать это.
Перейдите в корневой каталог i, e. где находится файл manage.py с помощью консоли или другого приложения, например Git.
Получите оболочку Python с помощью команды python manage.py shell.
Импортируйте модель пользователя, введя следующую команду из django.contrib.auth.models import User
Получите всех пользователей, введя следующую команду users = User.objects.all ()
Распечатайте список пользователей. Для пользователей 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
заключается в том, что вы не ограничены тем, какие пароли можете или не можете использовать - это не слишком похоже на чушь с именами пользователей. (Это в моей среде разработки. Я не выступаю за более слабые пароли. Вы всегда должны использовать надежные пароли в продуктах.)
- person Shashwat Black; 09.03.2018
новую настройку следует сначала запустить python manage.py createsuperuser
, чтобы создать пользователя. Похоже, что для входа в админку нет пароля по умолчанию.
Это можно сделать двумя способами:
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'
Вы можете попробовать это:
1.Измените пароль суперпользователя без консоли
python manage.py changepassword <username>
2.Измените пароль суперпользователя через консоль
Возможно, вы также неправильно ответили на вопрос о настройке и у вас нет сотрудников. В этом случае отправляйтесь в 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;
Если вы забыли создать пользователя с правами администратора, сначала создайте его с помощью команды 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 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()
Еще одна вещь, на которую стоит обратить внимание, - это установить для вашего пользователя статус is_staff
как активный. По крайней мере, у меня это работает. Для более подробной информации я создал еще superuser
, как объяснялось выше. Затем я перехожу к таблице базы данных auth_user
и ищу это имя пользователя, чтобы убедиться, что его флаг is_staff
установлен на 1
. Это наконец позволило мне войти на сайт admin
.
Создайте нового суперпользователя с помощью команды «python manage.py createduperuser». Войдите как новый суперпользователь. Щелкните ссылку "пользователи". Затем щелкните пользователя, которого хотите удалить. нажмите на удаление пользователя в конце страницы формы.
Примечание. Вышеупомянутый процесс внесет изменения в журналы активности, сделанные этим конкретным пользователем.
использовать
python manage.py dumpdata
затем посмотрите в конце вы найдете имя пользователя
Просто введите эту команду в свою командную строку:
python manage.py changepassword yourusername
Лучший способ - просто зайти в свой терминал и набрать
python manage.py createsuperuser
и снова введите другой пароль и имя пользователя, но в большинстве случаев вы потеряете часть своего профиля, который вы создали ранее.
Я думаю, лучший способ в командной строке
python manage.py создает суперпользователя
Если в /admin/ website
требуется ссылка reset_password
, это можно сделать: https://docs.djangoproject.com/en/3.2/ref/contrib/admin/#adding-a-password-reset-feature
(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()
В дополнение к ответу @JamesO, в котором говорится об использовании
python manage.py changepassword [username]
1- находясь в основном каталоге вашего проекта, обращайтесь к базе данных (я использую sqlite3):
sqlite3 db.sqlite3
2- перечислить содержимое auth_user
таблицы
SELECT * FROM auth_user ;
3- найдите пользователя с is_superuser = 1
, в моем случае это снимок экрана с выводом команды (I недостаточно очков репутации)
Другой способ получить имя пользователя (и большую часть информации) - это получить прямой доступ к базе данных и прочитать информацию из таблиц.