Django管理者パスワードをリセットする方法は?


448

Django(バージョン1.3)を使用していて、管理者のユーザー名とパスワードの両方を忘れてしまいました。両方をリセットする方法は?

そして、通常のユーザーを管理者にして、管理者ステータスを削除することは可能ですか?

回答:


782
python manage.py changepassword <user_name>

ドキュメントを見る


7
あなたがユーザー名を忘れたと言ったのに気づいた... 'admin'が私の答えのユーザー名であることは、それではあまり役に立たないだろう!
JamesO

8
@ user794916ユーザー名を覚えていない場合、これは奇妙な選択です。:-)
DrTyrsa

1
ユーザー名を「admin」から別の適切なユーザー名に変更できます。:D
mxi1 2015年

4
ジャンゴは最高です。すべてがとても簡単
DMTintner 2017年

5
ユーザー名を忘れた場合はmanage.py createsuperuser、2番目のスーパーユーザーを作成し、ユーザーのリストを表示して元のスーパーユーザーを見つけることができます。次に、元のユーザーとしてログインし、新しいスーパーユーザーを削除します。
シャッカー

173
  1. python manage.py createsuperuser 別のスーパーユーザーが作成され、adminにログインしてユーザー名を確認できます。
  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 2011年

このアプローチでは、ユーザーはdjango adminにアクセスできないようです
keul

3
@LucaFabbriあなたも設定する必要がありますuser.is_staff = True
アーロン・マクミリン

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
Timo

この方法では、ユーザーは検証なしでパスワードを設定できます。このようにして、非常に単純なパスワードを設定できます(テスト目的のみ)。これは、受け入れられている回答方法では許可されていません。
ゴータムJ


14

これは非常に良い質問です。

python manage.py changepassword user_name

例:-

python manage.py changepassword mickey

11

ユーザーを作成するには、まず 新しいセットアップ実行python manage.py createsuperuserする必要があります。adminにログインするためのデフォルトのユーザー名パスワードがないようです。


9

ユーザー名とパスワードを取得する最良の方法の1つは、それらを表示して更新することです。ユーザーモデルは、そのための完璧な方法を提供します。

この場合、私はDjango 1.9を使用しています

  1. ルートディレクトリに移動します。ここで、「manage.py」ファイルは、コンソールまたはGitなどの他のアプリケーションを使用して配置されます。
  2. コマンド「python manage.py shell」を使用してPythonシェルを取得します。
  3. 次のコマンド「from django.contrib.auth.models import User」を入力して、ユーザーモデルをインポートします
  4. 次のコマンドを入力して、すべてのユーザーを取得します "users = User.objects.all()"
  5. ユーザーのリストを印刷します。Python2ユーザーの場合は、「print users」コマンドを使用します。Python3ユーザーの場合は、「print(users)」コマンドを使用します。通常、最初のユーザーはadminです。

  6. パスワードを変更したいユーザーを選択してください。

    "user = users[0]"

  7. パスワードを設定する

    user.set_password('name_of_the_new_password_for_user_selected')

  8. 新しいパスワードを保存します

    "user.save()"

サーバーを起動し、ユーザー名と更新されたパスワードを使用してログインします。


この方法の利点は、manage.py changepassword使用できるパスワードや使用できないパスワードに制限されないことです。ユーザー名ががらくたに似ていることはありません。(これは私の開発環境にあります。私はより弱いパスワードを
推奨し

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

これを行う2つの方法:

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 Userthen を使用User.objects.get(username='username')すると、次のエラーがスローされる場合があります。

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

4

adminユーザーの作成を忘れた場合は、最初にcreatesuperuserコマンドをオンにして作成し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

注目に値するもう1つのことは、ユーザーのステータスis_staffをアクティブに設定することです。少なくとも、それが私にとってそれがうまくいく理由です。詳細については、superuser上記で説明したように別のものを作成しました。次に、データベーステーブルに移動し、auth_userそのユーザー名を検索して、is_staffフラグがに設定されていることを確認し1ます。これでようやくadminサイトにログインできるようになりました。


2

コマンド「python manage.py createsuperuser」で新しいスーパーユーザーを作成します。新しいスーパーユーザーとしてログインします。「ユーザー」リンクをクリックします。次に、削除するユーザーをクリックします。フォームページの最後にあるユーザーの削除をクリックします。

注-上記のプロセスにより、その特定のユーザーによって実行されたアクティビティログが変更されます。




0

最善の方法は、ターミナルに移動して入力することです

python manage.py createsuperuser

別のパスワードとユーザー名を再度挿入しますが、ほとんどの場合、以前に作成したプロファイルの一部が失われます。



0

youtコマンドラインでこのコマンドを入力するだけで簡単です

python manage.py changepassword yourusername


-1

ユーザー名(およびほとんどの情報)を取得する別の方法は、データベースに直接アクセスして、テーブルから情報を読み取ることです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.