[Django3.0]Auth機能のはじめの一歩 : ログイン後のみに表示

前準備として、migration後、管理者ツールでユーザを作ります。

### 管理者作成
python manage.py createsuperuser
http://192.168.33.10:8000/admin/

– adminとnormalユーザを作成します。

– adminユーザにはsurperユーザ権限を付与しておきます。

### @login_requiredによる制御

ページを二つ作ります。
urls.py

from django.contrib import admin
import myapp.views as views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('apple/', views.apple, name='apple'),
    path('banana/', views.banana, name='banana'),
]

ログインユーザのみ表示したいページには@login_requiredを付けます。
views.py

from django.shortcuts import render
from django.http import HttpResponse
from django.contrib.auth.decorators import login_required

@login_required(login_url='/admin/login/')
def apple(request):
	return render(request, 'myapp/apple.html')

def banana(request):
	return render(request, 'myapp/banana.html')

ログインした状態では、両方のページが見れます。

ログアウトした場合、@login_requiredを付けたページの方はログインページにリダイレクトされます。

username, passwordを入力すると、@login_requiredのページも表示される。

@login_requiredだと、ロールでの制御はどうするのかわからんが、取り敢えず表示・非表示は物凄く簡単だということはわかった。
次は、ユーザのget, create, update, deleteあたりだな。