##はじめに
この記事はDjango初級者脱却を目指す筆者が同じく初心者の方に向けた勉強メモです。言葉選びや解釈に間違いの可能性があります。
##触れること
- Userモデルとは
- userの作り方
- ログイン/ログアウトの実装
Userモデルとは
DjangoではUser管理用のデータベースがデフォルトで入っており、手間なく認証やユーザ管理を行うことが可能となっています。
Userモデルは以下のような継承関係にあり、以下に示すフィールド名を持ちます。
※ちなみにこの図はこちらの本を参考にさせていただきました。
https://www.amazon.co.jp/dp/B07GK7BWB7/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
また、他のmodelオブジェクト同様にしてデータにアクセスできます。
from django.contrib.auth.models import User
#ちなみにgetメソッドは値が取得できないとエラーを返す
User.objects.get(username='admin')
User.objects.get(pk=1)
#ちなみにallメソッドはクエリセットオブジェクトを返す
#リストのような使い方ができる
User.objects.all()
##Userの作り方
- コンソールで作る
(virtualenv)~~~~~$python manage.py createsuperuser
Adminサイトにアクセスできるすべての権限を持つスーパーユーザを作ります。
from django.contrib.auth.models import User
User.objects.create_user(username,email,password)
#ユーザ登録したこの直後にログインしたページへ飛ばしたいときは
#user = User.objects.create_user(username,email,password)
#とすると便利
##ログイン/ログアウト
from django.contrib.auth import authenticate, login, logout
def loginfunc(request):
#Userモデルに一致すればオブジェクトを、なければnoneを返すので以下のように
#if文を使う
#Userを登録した直後なら
#user = User.objects.create_user(username,email,password)で代用可
user = authenticate(request, username=username, password=password)
if user is not None:
#ログイン
login(request, user)
return redirect('userpage')
else:
return redirect('signup')
def logoutfunc(request):
#ログアウト
logout(request)
return redirect('signup')