Django 관리자 비밀번호를 재설정하는 방법은 무엇입니까?


451

Django (버전 1.3)를 사용하고 있으며 관리자 사용자 이름과 비밀번호를 잊어 버렸습니다. 둘 다 재설정하는 방법?

그리고 일반 사용자를 관리자로 만든 다음 관리자 상태를 제거 할 수 있습니까?

답변:


785
python manage.py changepassword <user_name>

문서를 참조하십시오


7
방금 당신이 당신이 사용자 이름을 잊었다는 것을 깨달았습니다.
JamesO

8
@ user794916 사용자 이름을 기억하지 못하면 다소 이상한 선택입니다. :-)
DrTyrsa 2016 년

1
사용자 이름을 "admin"에서 다른 적절한 사용자 이름으로 변경할 수 있습니다. : D
mxi1

4
장고가 최고입니다. 모든 것이 너무 쉽습니다
DMTintner

5
사용자 이름을 잊어 버린 경우 manage.py createsuperuser두 번째 수퍼 유저를 만든 다음 사용자 목록을보고 원래 사용자를 찾을 수 있습니다. 그런 다음 원래 계정으로 로그인하고 새 수퍼 유저를 삭제하십시오.
shacker

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 admin에 액세스 할 수없는 것 같습니다
keul

3
@LucaFabbri 당신은 또한 설정해야user.is_staff = True
아론 McMillin

122

콘솔을 통해 시도 할 수 있습니다.

python manage.py shell

그런 다음 쉘에서 다음 스크립트를 사용하십시오.

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

새 비밀번호를 설정합니다 (:


12
User.objects.filter(is_superuser=True)
DrTyrsa

pip install django-extensions에 추가 installed apps하고 실행하십시오 ./manage.py shell_plus. User클래스는 사용할 수 있습니다 그리고 당신은 할 수 있습니다 password-change.
Timo

이 방법을 사용하면 유효성 검사없이 비밀번호를 설정할 수 있습니다. 따라서 승인 된 답변 방법에서 허용하지 않는 매우 간단한 비밀번호 (테스트 목적으로 만)를 설정할 수 있습니다.
Gautam J


14

이것은 매우 좋은 질문입니다.

python manage.py changepassword user_name

예 :-

python manage.py changepassword mickey

11

사용자를 만들려면 먼저 새로운 설정실행 해야합니다 python manage.py createsuperuser. admin에 로그인하기위한 기본 사용자 이름 비밀번호가없는 것 같습니다.


9

사용자 이름과 비밀번호를 검색하는 가장 좋은 방법 중 하나는 사용자 이름과 비밀번호를보고 업데이트하는 것입니다. 사용자 모델은이를위한 완벽한 방법을 제공합니다.

이 경우 Django 1.9를 사용하고 있습니다.

  1. 루트 디렉토리 i로 이동하십시오. "manage.py"파일은 콘솔 또는 Git와 같은 다른 응용 프로그램을 사용하여 있습니다.
  2. "python manage.py shell"명령을 사용하여 Python 쉘을 검색하십시오.
  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()"

서버를 시작하고 사용자 이름과 업데이트 된 비밀번호를 사용하여 로그인하십시오.


이 방법의 장점은 manage.py changepassword사용자가 쓸모 없거나 사용할 수없는 암호로 제한되지 않는다는 것입니다. (이것은 내 개발 환경에 있습니다. 나는 더 약한 암호를 옹호하지 않습니다. 당신은 항상 강력한 암호를 생산해야합니다.)
Shashwat Black

5

설정 질문에 잘못 대답하여 직원이 없을 수도 있습니다. 이 경우 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;

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

admin 사용자 생성을 잊어 버린 경우 먼저 createsuperuser명령 on으로 빌드 한 manage.py다음 비밀번호를 변경하십시오.


4

이것을 시도 할 수 있습니다 :

1. 콘솔없이 수퍼 유저 비밀번호 변경

python manage.py changepassword <username>

2. 콘솔을 통해 수퍼 유저 비밀번호 변경

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오


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>

그리고 비밀번호에는 changepassword django가 사용자 비밀번호를 변경하는 CLI 명령 이 있습니다.

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 manage.py createsuperuser"명령을 사용하여 새 수퍼 유저를 작성하십시오. 새로운 수퍼 유저로 로그인하십시오. '사용자'링크를 클릭하십시오. 그런 다음 삭제하려는 사용자를 클릭하십시오. 양식 페이지 끝에서 사용자 삭제를 클릭하십시오.

주 – 위의 프로세스는 해당 특정 사용자가 수행 한 활동 로그를 변경합니다.



1

사용하다

python manage.py dumpdata

그런 다음 끝에 당신이 사용자 이름을 찾을 것입니다 봐


0

가장 좋은 방법은 터미널에 가서 입력하는 것입니다

python manage.py createsuperuser

다른 비밀번호와 사용자 이름을 다시 삽입하지만 대부분의 경우 u는 이전에 생성 한 일부 프로필을 잃어 버립니다.



0

yout 커맨드 라인 에이 명령을 입력하는 것이 매우 쉽습니다.

python manage.py changepassword yourusername


-1

사용자 이름 (및 대부분의 정보)을 얻는 또 다른 방법은 데이터베이스에 직접 액세스하여 테이블에서 정보를 읽는 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.