Django2.1.1 を使ってログインを実装する

Djangoを使ってログインの実装を行います。

元々Djangoが持っている認証システムを使っての実装になります。

公式ドキュメントで詳細など確認できます。
https://docs.djangoproject.com/ja/2.1/topics/auth/default/

尚、以下のバージョンを使っての実装をしています。
python3.6
django2.1.1

 

認証機能の実装

まず、「settings.py」の確認を行います。

 

デフォルトで問題ないのですが、「django.contrib.auth」、「django.contrib.auth.middleware.AuthenticationMiddleware」などで認証を行なっているのを確認します。

「settings.py」ではログインした後に飛ぶURLと、ログアウトした後に飛ぶURLを設定できるので以下を設定しておきます。

「settings.py」では最低限は上記の設定のみで大丈夫です。

 

マイグレーションとユーザー作成

DBは初期段階では必要なテーブルが作成されていないので以下のマイグレーションを実施します。

 

また、上記でユーザー様のテーブルが作成され、認証ではUserオブジェクトを使いますが、そのユーザーの作成を行います

Userオブジェクトのデフォルトでの主要な属性では以下などがあります。

  • username
  • password
  • email
  • first_name
  • last_name

 

さて、ユーザーの作成を行います。

上記がログインに必要なユーザーになります。

 

ルーティングの設定

さて、次にルーティングの設定として、「urls.py」の変更を行います。

上部で「django.contrib.auth」の読み込みを行なっています。

上記で、「login/」のパスでログインが実施できるようになりました。

また、logoutの機能もあわせて設定しています。

 

ログインページの作成

最後にログイン用のHTMLの作成を行います。

今回はとてもシンプルにしました。

 

ブラウザからは以下のURLなどでログインします。
http://localhost:8000/login/

これで先ほど作成したユーザーでログインの実施が可能になりました。

 

ユーザーがログインしているかの判別

ユーザーがログインしているかの判別は以下で行えます。

 

また、テンプレートでは以下のように判別します。

 

認証としてはこちらで基本的な部分は完了となります。

実際にはサインアップもありませんし、Userオブジェクトなどのモデルをどうするかなどアプリ作成時には諸々検討すべき項目がありますが、シンプルな形でのログインは上記までで。

★参考URL
https://leben.mobi/blog/django_login/python/
https://qiita.com/toku-hiro/items/3dce62615291fcb171a6