Djangoでログイン認証の実装例を紹介します。
Contents
Django ログイン認証 実装例画面イメージ
Django ログイン認証 事前準備
Djangoのログイン認証機能を使用して実現します。
DB作成
ログインするユーザー情報はDBに保存されますので、DBの作成が必要となります。
次のコマンドをコンソールより実行してください。
python manage.py migrate
Djangoが用意しているDB情報が生成されます。
ログインユーザー作成
またログインユーザーの作成も必要となります。
次のコマンドをコンソールより実行してください。
python manage.py createsuperuser
ユーザー名(ログインユーザーID)、メールアドレス、パスワード情報の入力が要求されますので、入力します。
メールアドレスは不要ならば未入力のまま決定しても問題ありません。
アプリ作成
今回実装用のアプリを生成します。
コンソールより以下を実行してください。(アプリ名は任意でOKです)
python manage.py startapp login_app
アプリ名は「login_app」前提で進めます。
Django ログイン認証 実装例詳細 - プロジェクト側
settings.py
LOGIN_URL = 'login'
LOGIN_REDIRECT_URL = 'login_index'
LOGOUT_REDIRECT_URL = 'login_index'
項目 | 概要 |
---|---|
LOGIN_URL | 未ログイン時に遷移するURL 本来ログイン後で確認できるページに無断でアクセスされない為にも設定しておく必要があります。 |
LOGIN_REDIRECT_URL | ログインした後に遷移するURL |
LOGOUT_REDIRECT_URL | ログアウトした後に遷移するURL |
urls.py
urlpatterns = [
path('login-app/', include("login_app.urls")),
]
既存の箇所に追加してください。
Django ログイン認証 実装例詳細 - アプリ側
ファイル構成
urls.py
from django.urls import path, include
from . import views
urlpatterns = [
path('top/', views.index, name='login_index'),
path('', include('django.contrib.auth.urls')),
]
views.py
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
@login_required
def index(request):
return render(request, 'login_app/index.html')
「@login_required」について
ログイン済みでなければ、LOGIN_URLで設定されたページに飛ばされるようになります。
ログインしなければ閲覧できないページは全てこれを付加しておきましょう。
login.html
ログインページはDjangoの機能を利用しますが、テンプレートはこちらで用意する必要があります。
配置場所は決まっており「/login_app/templates/registration」下です。
「registration」フォルダを作成し、その下に配置しましょう。
<!DOCTYPE html>
<html>
<head>
<title>ログイン</title>
</head>
<body>
<h1>ログイン</h1>
<form method="post">
{% csrf_token %}
{{ form.as_p }}
<br>
<button type="submit">ログイン</button>
</form>
</body>
</html>
index.html
<!DOCTYPE html>
<html>
<head>
<title>メイン画面</title>
</head>
<body>
<p>ログインユーザー:{{user.username}}</p>
<br>
<p><a href="{% url 'logout' %}">ログアウト</a></p>
</body>
</html>
コメント