【Django】ページ閲覧に『ログイン必須』の規制を掛ける方法
【Django】ページ閲覧に『ログイン必須』の規制を掛ける方法
超簡単でした。
色んなやり方があるみたいですが、Djangoの基本機能のみで実装します。
ログイン規制は Views.py の設定だけでOK
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# views.py from django.contrib.auth.decorators import login_required # defで記載するものの規制用 from django.contrib.auth.mixins import LoginRequiredMixin # classで記載するものの規制用 """ ログイン不要のページ (def) """ def InfoView(request): """template_name = "websites/information.html""" data = Contents.objects.filter(switch=1).filter(types=1).order_by('sort_number') params = { 'title': 'インフォメーション', 'data': data } return render(request, 'websites/information.html', params) ”””” ログイン必須のページ (def) """ @login_required # このマーカー以降に書いた def はログイン必須ページになる def ServiceView(request): data = Contents.objects.filter(switch=1).filter(types=2).order_by('sort_number') params = { 'title': '事業内容', 'data': data } return render(request, 'websites/service.html', params) """ ログイン不要のページ (class) """ # @login_required 以降に書いていてもClassで記載したページはログイン必須にならない class IndexView(generic.TemplateView): template_name = "websites/index.html" """ ログイン必須のページ (class) """ class InquiryView(LoginRequiredMixin,generic.FormView):# LoginRequiredMixinを記載する template_name = "websites/inquiry.html" form_class = InquiryForm success_url = reverse_lazy('company:inquiry') def form_valid(self, form): form.send_email() messages.success(self.request, 'メッセージを送信しました。') logger.info('Inquiry sent by {}'.format(form.cleaned_data['name'])) return super().form_valid(form) |
これだけで、ログイン必須ページにアクセスするとログインページへ遷移してくれる。
まとめ
ログイン必須化がこれだけで完了と言うのは驚きでした。
role管理はまだ構築してないですが、これも簡単だと嬉しいなぁ。
-
前の記事
【Bootstrap】グラフ作成で横軸の日付が表示されなかった理由 2020.12.01
-
次の記事
【Django】datetime.dateで保存された値のUNIXマイクロ秒変換方法と並び替え 2020.12.03
コメントを残す