78日目 割烹芸人の実装4
よくあるログイン機能を実装してみます。
投稿サイトではログイン機能というものがあります。会員限定の機能を付けたい場合はよく利用されますね。
個人用のテンプレートを作る機能を付けたいので、割烹エディターにもログイン機能を実装していきます。
0からそういった機能を作るのはなかなか難しいのですが、幸いにもDjangoにはユーザー認証ができる機能がデフォルトで用意されています。
それを使って、ユーザー独自のテンプレートや、公開テンプレートを作成する機能を追加できるようにしたいと思います。
なので今回はユーザー認証について勉強していきます。
とりあえず、今回は簡単に済むDjangoのライブラリを使わないでカスタムユーザーを定義してみます。実際にはメール送信処理などはやらずに手動でユーザー追加する予定なので、ログイン処理がどんなふうになっているかを勉強してみます。
■認証アプリケーションの作成
色々な資料を見ていると認証系のアプリケーションをaccountsという名前で作っている感じですね。デフォルトの認証がそのようになってるからかな?
Djangoの組み込みの認証システムではログイン、ログアウト、パスワード変更、パスワード再設定がデフォルトで提供されているようです。
とりあえず機能は、ログイン、ログアウト、パスワード変更、ユーザー名変更、退会処理ができるようになればいいかな。
ユーザー登録は手動で、管理者(夕月)が追加するようにします。正直メールアドレス認証やツイッター認証をしてもあんまり意味がないかなって思うので。
■ユーザーモデル
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
narou_id = models.IntegerField('なろうID', null=True, blank=True)
Djangoが提供しているユーザーモデルは、決まっているのでそれに追加するためにはカスタムユーザーモデルを定義してデフォルトのユーザーモデルを継承します。
今回はデフォルトのユーザーモデルになろうIDだけ追加しました。今のところこのIDを何かに使う予定はないですが、とりあえず付けときます。
ログインページはこんな感じ。
{% extends 'base.html' %}
{% load static %}
{% block title %}割烹エディター{% endblock %}
{% block header %}
<link rel="stylesheet" href="{% static 'info/info.css' %}">
{% endblock %}
{% block content %}
<article class="sites">
<h1 class="sites__title">ログイン</h1>
<div class="login-form">
<form action="" method="POST">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">ログイン</button>
</form>
</div>
<p><a href="/">トップページに戻る</a></p>
</article>
{% endblock %}
シンプルな感じにしています。
さて、どうなったかな。
はい、できてますね。
あとはこれにログイン後の画面、マイページ、ユーザー情報の変更機能を付けてっと。(コードは割愛)
・ログイン後のページ
・マイページ
・ユーザー情報変更、パスワード変更、退会
はい、どや(/・ω・)/
ということで、一応ログイン機能が作れました。
次はこのログイン機能を使って、公開テンプレート、非公開テンプレートを作れるようにしていきます。




