• ログインの実装方法【DjangoのBuilt-Inを使います】

    ログインの仕組みを作るのって、大変ですよね。

    ただ、Djangoはデフォルトでログインの仕組みを作ってくれています。

    ここでは、ログインの実装方法について学んでいきましょう。

    Built-Inのログインの仕組みをまず押さえよう

    まずはじめに、Built-Inでのログインがどういったことなのか?その仕組みは?という部分についてみていきましょう。

    Built-Inでのログインとは、「Djangoがログインをするための色々なコードを事前に準備してくれており、それを使ってログインの実装をする」ということです。

    具体的には、Djangoがすでに準備してくれているアプリのurlパターンを呼び出し、そのurlパターンに合致するurlにアクセスすると、ログインの実装が簡単にできるようになっている。というものです。

    ログインするためのアプリを紹介

    ここで、ログインするために使われるアプリについてお伝えしていきます。

    ログインするために使われるアプリはauthです。つまり、authアプリのurls.pyファイルを呼び出すことによって、指定したurlに対するviewを呼び出すという形です。

    具体的なコードをみていきましょう。

    コード
    

    urlpatterns = [

        path('accounts/', include('django.contrib.auth.urls'),

    ]

    これで、authアプリの中のurls.pyファイルを呼び出すことができます。

    今回はaccountというurlにしましたが、これは何でも問題ありません(任意の名前にして大丈夫です)。

    authアプリの中のurls.pyファイルの中身を紹介

    ここから、authアプリ内のurls.pyファイルに書かれている内容についてみていきましょう。

    (一部のみ書いています。すべて確認したい方は、DjangoのオフィシャルHPを参考にしてください。)

    コード
    

    login/ [name='login']

    logout/ [name='logout']

    password_change/ [name='password_change']

    これは、localhost:8000/accounts/loginというurlを入力すれば、viewを書かなくても、それに対応したhtmlテンプレートを呼び出してくれることを意味して意味しています。

    ただし、htmlファイルは自分で作らないといけません。

    どういうことかというと、urlpatternでloginというurlが呼び出されると、djangoではデフォルトでregistration/login.htmlというファイルが呼び出されるように設定されています。

    ですので、このlogin.htmlファイルを作るだけで、loginするためのウェブページを作ることができるのです。

    ログインで呼ばれるhtmlファイルを作る

    ログインの実装をするためには、htmlファイルを作っていきましょう。

    上記の通り、ログインビューについては、Djangoはデフォルトで「registration/login.html」ファイルを呼び出すように設定されています。

    ですので、registrationディレクトリを作った上で、そのディレクトリの中にlogin.htmlファイルを作っていきましょう。

    コード
    

    login.html

    <form action='' method='POST'>{% csrf_token %}

    {{ form.as_p }}

    <input type="submit" value='ログインする'>

    </form>

    フォームを作る上で最低限必要な情報を入れました。

    これでサーバーを立ち上げ、実際のログイン画面を確認してみましょう。

    ログインの実装

    このように、ログインの画面がちゃんと表示されていることが確認できました。

    つまり、Djangoはログイン画面を作るためのViewを準備してくれているのです。

    ログイン後に表示するviewを指定する

    最後に、ログインが無事に完了した後に表示するviewを指定していきましょう。

    この指定はsettings.pyファイルの中で行います。

    このようなコードを追加してあげましょう。

    コード
    

    LOGIN_REDIRECT_URL = 'home'

    これで、ログイン後に、homeという名前が付けられたviewが表示されます。

    htmlファイルの名前を変えたい場合

    ここまでで実装は完了なのですが、デフォルトの項目を変更したいという場合もあるかと思いますので、最後にhtmlファイルの場所や名前を変えたい場合についてご紹介します。

    htmlファイルの場所を変える場合、urlpatternsを以下のように変更します。

    コード
    

    from django.contrib.auth import views as auth_views

    urlpatterns = [

        path('accounts/', include('django.contrib.auth.urls')),

        path('login/', auth_views.LoginView.as_view(template_name='create.html')),

    ]

    直接LoginViewを呼び出し、template_nameを変更することによって呼び出すhtmlファイルを変えているというポイントを押さえましょう。

     

    login(Built-in)のまとめ

    (1) djangoは、ログインするためのテンプレートを事前に準備してくれている

    (2) ただ、htmlファイルは自分で作らなければいけない

    (3) デフォルトでは、registration/login.htmlが呼び出される

    (4) このlogin.htmlファイルは、urls.pyファイルで変更することができる

     

    ~Django無料講義~のご案内

    Code for Djangoが、4時間超の無料Django講義をはじめました

    •  ・本を出版したCode for Djangoの
       製作者が作ったサイトです。
    •  ・Code for Djangoの内容も、
       動画で詳しく解説しています。
    •  ・動画は順次ふやしていきますので、
       ただで学び続けることが可能です。
    •  ・Djangoの効率的なスキルアップに、
       是非お役立て下さい。