Django LoginRequiredMixinの使い方|実例付

lightDjango

(最終更新月:2021年12月)

「ページへのアクセスをログインユーザーのみに制限したい!」

という方へ向けたDjango初学者向けの記事となります。

当記事を通じて、

  • 「LoginRequiredMixin」の書き方
  • 実際のコード例

をご紹介します。

現在開発中の日報アプリでは、ユーザーがログインしていない状態で新規作成をすると下記の通りエラーとなります。

ユーザーがログインしていない場合はログインページへ進むよう設定していきます。

【著者プロフィール】

profile_icon
【Python歴】11年 x 【Django歴】10年
HP作成、社内システムの構築、コンサルティング

当ブログを通じて、Webアプリの書き方やアプリの公開方法までを解説しています。

☆日報アプリ「D-Repo」(デモ版)→こちら

※Djangoをベースに作成したアプリです。

☆便利ツールアプリ「Tool Station」→こちら

※Django REST frameworkとReactで作成しているアプリです。

✔YouTube解説動画

当記事の内容は動画を見ながら進めると、約15分程度で完了します。

動画ならではの情報も解説しているので、記事と一緒にご覧ください。

動画の概要欄には、単元ごとのコードを紹介しているgithubページも載せています。

【クラスベースビュー】LoginRequiredMixinの書き方

書き方のポイントとしておさえとくのは

  1. インポート
  2. クラスの継承

という2つになります。

from django.contrib.auth.mixins import LoginRequiredMixin

でインポートし、

class クラス名(LoginRequiredMixin, 他継承元):
    ...
    ...

と進めます。

クラス継承の際は、LoginRequiredMixinを最前にもってくるようにしよう!

コード例

from django.contrib.auth.mixins import LoginRequiredMixin

class NippoCreateFormView(LoginRequiredMixin, CreateView):
    template_name = "nippo/nippo-formclass.html"
    form_class = NippoModelForm
    success_url = reverse_lazy("nippo-list")

    def get_form_kwargs(self):
        kwgs = super().get_form_kwargs()
        kwgs["user"] = self.request.user
        return kwgs

ログインをしていない状態で直接CreateViewのURLを打ち込みページへ進んでみよう!

自動的にログイン画面へリダイレクトしてくれます。

また、その際のURLも、

http://localhost:8000/accounts/login/?next=/nippo/create/

などと、ログイン後には元いたページへ戻る設定もされています。

まとめ

「ユーザーがログインしている場合だけ表示したい!」という場合は、クラスベースビューでは「LoginRequiredMixin」を使うと効果的です。

  1. LoginRequiredMixinのインポート
  2. クラスの継承

という流れを覚えておきましょう!

さて、CreateViewについてはログインユーザーでの制限で十分ですが、UpdateViewDeleteView、についてはいかがでしょうか?

ログインしているからって他の人の日報まで編集、削除できても困りますよね?

次回は、UserPassesTestMixinを使い、独自にアクセスを制限するクラスを作成する方法について解説します

✔当ブログは以下のような方に向けて書かれています

「Djangoでのアプリ開発を学びたい!」

「Djangoで開発したアプリをWebで公開するにはどうするの?」

✔当ブログ掲載の記事

  • Djangoで作る日報アプリ開発
  • WebアプリをWeb上に公開する方法
  • Webアプリ開発に必要なそのほかの情報
【Django】チュートリアル|日報アプリの開発から公開まで
Djangoのチュートリアルをお探しですか?具体的に「手を動かして作ってみたい!」という方へ向けて、誰でもできる簡易的な日報アプリの開発を通じて、Djangoの様々な機能に触れていくシリーズとなっています。PythonでWebアプリを作りたい方、必見の記事となります!

ITCブログにご協力いただける方は、以下もご検討いただけると嬉しいです。

ITCへ投げ銭をする

タイトルとURLをコピーしました