はじめに
- 前回、Djangoのユーザー認証回りのユーザー登録とログイン回りを実装したので、今回はログアウト、ログイン判定をしていく。
ユーザー管理
下記の機能を実装することが可能です。 - ユーザー登録(前回) - ログイン(前回) - ログアウト - 認証 - ログイン判定
コード
アプリケーションのsetting.py
from django.urls import path from .views import signup, login, logout_view urlpatterns = [ path('signup/', signup, name='signup'), path('login/', login, name='login'), path('logout/', logout_view, name='logout'), ]
アプリケーションのview.py
- ログアウトの場合
from django.contrib.auth import logout def logout_view(request): logout(request) return redirect('login')
- ログインしているかの判定はlogin_requiredデコレータを利用してログイン済みユーザのみに閲覧制限をかける。
下記の例はユーザーリストのviewはログインユーザーのみみせたい場合に
@login_required
を指定する
from django.contrib.auth.decorators import login_required @login_required def userlist(request): return render(request, 'list.html')
アプリケーションのview.py
- View側は
user.is_authenticated
でユーザーがログインしているか、していないかで判定することが可能である - ログインしていたら、
user.username
などでユーザー情報を簡単に取得することが可能である。
{% extends 'base.html' %} {% block content %} {% if user.is_authenticated %} <form action='' method="POST" enctype="multipart/form-data">{% csrf_token %} <p>タイトル:<input type="text" name="title"></p> <p>内容:<input type="text" name="content">/p> <p>画像:<input type="file" name="images"></p> <input type="hidden" name="author" value={{ user.username }}> <input type="submit" value="作成する"> </form> {% else %} ログインしてください {% endif %} {% endblock content%}