Django4 user管理 初期設定 まとめ

Django4 user管理 初期設定 まとめ

Django4 user管理 初期設定 まとめ

Django4 user管理 初期設定 まとめ

意味:

user(ユーザー)モデルとは、Djangoのフレームワークにおいて、効率的にユーザー管理ができる仕組みです。
djangoではdjango.contrib.authのモジュールに、ユーザー管理に必要なアカウント(account)・グループ(group)・パーミッション(permission)などの機能をまとめています。

動作環境:


Djangoの初期設定を終えた段階を想定しています。
OS: Linux Ubuntu 22
Program: Python 3.7
Framework: Django 4
Database: PostgreSQL 14

コマンドまとめ:


#python仮想環境に入る
source /xxx/[pythonenv]/bin/activate 
source /hikari/bin/activate
source /pythonprj/ramen/bin/activate

#usersのappを新規作成する
cd /xxx/[djangoproject] #projectディレクトリへ移動
cd /hikari/front
cd /pythonprj/pasta
python manage.py startapp users

#INSTALLED_APPSへ追加
INSTALLED_APPS = [
"django.contrib.admin",

"users", #追加
"django.contrib.sites" #追加
"django.contrib.auth", #追加

'allauth', #追加
'allauth.account', #追加
'allauth.socialaccount', #追加
'allauth.socialaccount.providers.google', #追加
]

#django.contrib.authはstart projectコマンドによってデフォルトで追加されていますが、理解のために確認しておきましょう。

#migration
/pythonprj/pasta/manage.py makemigrations
/pythonprj/pasta/manage.py showmigrations
/pythonprj/pasta/manage.py migrate

#/project/urls.pyにaccountsパスを追加
urlpatterns = [
path('accounts/', include('django.contrib.auth.urls')), #追加
path('admin/', admin.site.urls),
]

#path('accounts/', include('django.contrib.auth.urls'))は、デフォルトでユーザー管理に必要なURLをまとめて整備します。
#django.contrib.auth.urlsの中身
accounts/ login/ [name='login']
accounts/ logout/ [name='logout']
accounts/ password_change/ [name='password_change']
accounts/ password_change/done/ [name='password_change_done']
accounts/ password_reset/ [name='password_reset']
accounts/ password_reset/done/ [name='password_reset_done']
accounts/ reset/// [name='password_reset_confirm']
accounts/ reset/done/ [name='password_reset_complete']

#django.contrib.auth.urlsはデフォルトでそれぞれのtemplateを指定しています。これでログイン・ログアウト・パスワード変更などの機能が追加されました。

#ソーシャルログインの準備
python -m pip install django-allauth #packageのインストール

#settings.py TEMPLATESのcontext_processorsへ以下を追加
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',

#settings.py AUTH_PASSWORD_VALIDATORSの下にAUTHENTICATION_BACKENDSを新規作成
AUTHENTICATION_BACKENDS = [
'django.contrib.auth.backends.ModelBackend',
'allauth.account.auth_backends.AuthenticationBackend', #追加
]

#settings.pyの下部に以下を新規作成
SITE_ID = 1

ACCOUNT_EMAIL_REQUIRED = True
ACCOUNT_USERNAME_REQUIRED = False

LOGIN_REDIRECT_URL = '/'
LOGOUT_REDIRECT_URL = '/'

ACCOUNT_DEFAULT_HTTP_PROTOCOL = "https"
DEFAULT_HTTP_PROTOCOL = "https"

#urls.pyの変更
urlpatterns = [
path('accounts/', include('allauth.urls')), #追加
path('accounts/', include('django.contrib.auth.urls')), #削除
]

#admin画面からSitesの設定
example.com #変更前
tokyo-sensei.com #変更後

#admin画面からSocial applicationsの設定
Provider: Google
Name: Gmail
Client id: xxx
Secret key: xxx

#事前にGoogleでの登録申請が必要です。

#Postgresの動作確認
sudo systemctl status postgresql #状態確認
sudo systemctl restart postgresql #再起動
sudo systemctl enable postgresql #自動再起動の設定

探究資料:


djangoproject.com.
PostgreSQL 14.2 Documentation.

スポンサーさん

エラー Site matching query does not exist

エラー文章:


Site matching query does not exist

解説:


このエラーは、データベースのdjango_siteのデータに、不具合がある場合に発生します。

対策:


settings.pyにSITE_ID = 1を設定する。
admin画面でSITE_IDとdomain名の対応を確認する。

Django4 user管理 初期設定 探究資料

科目別 By Curriculum


大学受験  情報科学(Computer science)

単元別 By Subject


情報科学  プログラミング(Programming)
情報科学  パイソン (Python)
情報科学  ウェブ(Web)
情報科学  ウィンドウズ (Windows)
情報科学  リナックス (Linux)
情報科学  ギットハブ (Github)
情報科学  ジャンゴ (Django)

対象児童生徒 By Age


中学数学(二次関数まで!)を履修し終えている生徒
コンピューターの基礎知識を学びたい生徒
自分でプログラム(program)を書きたい生徒
情報科学(Computer Science)を学びたい生徒
大学受験生(国公立高校生+私立中高一貫校生)
大学生+社会人(基礎からやり直したい生徒)


プロ家庭教師コンピューター教材で、重要語句の日本語訳・韓中英訳・別名・解説をまとめています。オンライン学習用で、生徒・保護者・教員・家庭教師のために、無料ダウンロードを提供します。

スポンサーさん