プログラミング学習413日目 Djangoで社内受発注システムアプリ作成 5日目 ~login状態の判定 logout実装~
login状態の判定について。
function-based viewの場合において、@login_requiredを書くことによってその下の関数が実行される前にログイン状態が判定できます。@~はデコレータと呼ばれています。
#views.py
@login_required
def choicesview(request):
user = request.user
products = ProductModel.objects.filter(display='y').order_by('product_id')
return render(request, 'choices.html', {'user': user, 'products': products})
この際、ログインしていない場合に遷移させるディレクトリをsettings.pyにLOGIN_URLという変数でURLを指定する必要があります。
#settings.py
LOGIN_URL ='/login/' ----コード追記 ('/login/'はlogin画面のURL)
これでログインされていない場合、login画面に遷移されるようになります。
ついでに簡単なのでlogoutの実装も。
#urls.py
from django.contrib import admin
from django.urls import path
from .views import loginview, logoutview ---logoutviewを追記
urlpatterns = [
path('admin/', admin.site.urls),
path('logout/', logoutview, name='logout') ----追記
]
#views.py
from django.contrib.auth import authenticate, login, logout
def logoutview(request):
logout(request)
return redirect('login')