はじめに
- 前回、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%}