Django4 user管理 初期設定 まとめ>Django>情報科学

この記事 > Django > 情報科学
作成 更新
None

None


意味:

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.

全文を読む


Django

Github

Python

Nginx

Windows

Linux

PostgreSQL

ウェブ

プログラミング

中学受験講座

高校受験講座

大学受験講座

社会人講座