私はDjango(バージョン1.3)を使っていて、管理者のユーザー名とパスワードの両方を忘れています。両方をリセットするには?
一般ユーザーを管理者にしてから管理者のステータスを削除することは可能ですか?
python manage.py changepassword <user_name>
python manage.py createsuperuser
は別のスーパーユーザーを作成します、あなたはadminにログインしてあなたのユーザー名を思い出すことができるでしょう。通常のユーザー特権を与えるには、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
シェルで次のスクリプトを使用します
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()
そして新しいパスワードを設定します(:
createsuperuser
commandを使用して、新しいスーパーユーザーを作成できます。
これはとても良い質問です。
python manage.py changepassword user_name
例: -
python manage.py changepassword mickey
新しいセットアップ - 最初に python manage.py createsuperuser
を実行してユーザーを作成します。 adminにログインするためのデフォルトのユーザー名パスワードがないようです。
ユーザー名とパスワードを取得する最良の方法の1つは、それらを表示して更新することです。ユーザーモデルはそのための完璧な方法を提供します。
ユーザーのリストを印刷するPython 2ユーザーの場合は "print users"コマンドを使用します。Python 3ユーザーの場合は "print(users)"コマンドを使用します最初のユーザーは通常adminです。
パスワードを変更したいユーザーを選択してください。
"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;
Create adminユーザーを最初に作成し忘れた場合は、manage.py
にcreatesuperuser
コマンドを使用してパスワードを変更してください。
あなたがここで作成されたユーザー名を知らない場合に備えて。上記の@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 fixesuperuser"を使用して、新しいスーパーユーザーを作成します。新しいスーパーユーザーとしてログインします。 「ユーザー」リンクをクリックしてください。次に、削除したいユーザーをクリックします。フォームページの最後にあるdelete userをクリックしてください。
注 - 上記のプロセスにより、その特定のユーザーによって行われたアクティビティログが変更されます。
注目に値するもう一つのことは、あなたのユーザーのステータスis_staff
をアクティブに設定することです。少なくとも、それが私にとってうまくいく理由です。さらに詳しくは、上で説明したように私は別のsuperuser
を作成しました。次にデータベーステーブルauth_user
に行き、そのユーザー名を検索してそのis_staff
フラグが1
に設定されていることを確認します。これでようやくadmin
サイトにログインできました。
つかいます
python manage.py dumpdata
それからあなたがユーザー名を見つける最後を見てください
これを行う2つの方法:
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.is_staff = True
>>> 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'
python manage.py changepasswordユーザー名
管理者を忘れた場合は、使用して新しいユーザーを作成する必要があります
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()