LoginSignup
10
6

More than 3 years have passed since last update.

【Django】Userモデルに使えるフィールド名・ユーザー登録・ログインの仕方

Last updated at Posted at 2020-03-05

はじめに

この記事はDjango初級者脱却を目指す筆者が同じく初心者の方に向けた勉強メモです。言葉選びや解釈に間違いの可能性があります。

触れること

  • Userモデルとは
  • userの作り方
  • ログイン/ログアウトの実装

Userモデルとは

DjangoではUser管理用のデータベースがデフォルトで入っており、手間なく認証やユーザ管理を行うことが可能となっています。

Userモデルは以下のような継承関係にあり、以下に示すフィールド名を持ちます。
Usermodel.png

※ちなみにこの図はこちらの本を参考にさせていただきました。
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サイトにアクセスできるすべての権限を持つスーパーユーザを作ります。

  • adminサイトで作る
    admin.JPG
    runserverしてからAdminサイトへいき、Addをクリック

  • views.py内で作る

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')


10
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
6