見出し画像

36歳がDjangoを勉強してみた(ユーザ管理機能_その1)

今回もpaizaで勉強したWebアプリケーションフレームワークのDjangoについて書きます。


【やったこと】

●ログイン・ログアウト画面作成の準備をした

今回は以前作成したランチマップWebページにログインとログアウト画面作成のための準備をします。

Djangoにはすでにログイン・ログアウトのテンプレートがあるためそれらを利用します。

今までの差分で設定するため、過去の設定内容は以下の記事を参照ください。

●今回は以下のファイルを修正します。

・settings.py
・urls.py

まずは、プロジェクト共通で利用するテンプレートを定義するため、settings.pyを修正します。

ファイル:myapp>myapp>settings.py

コード:

TEMPLATES = [
   {
       'BACKEND': 'django.template.backends.django.DjangoTemplates',
       'DIRS': [os.path.join(BASE_DIR, 'templates')], #追加
       'APP_DIRS': True,
       'OPTIONS': {
           'context_processors': [
               'django.template.context_processors.debug',
               'django.template.context_processors.request',
               'django.contrib.auth.context_processors.auth',
               'django.contrib.messages.context_processors.messages',
           ],
       },
   },
]

WSGI_APPLICATION = 'myapp.wsgi.application'

LOGIN_REDIRECT_URL = '/' #追加

TEMPLATESのDIRSに「os.path.join(BASE_DIR, 'templates')」を追加します。

「os.path.join」とは引数で指定されたパスの名前を結合するための関数です。

このコードの場合では、「BASE_DIR」+「templates」というパスに結合します。

「BASE_DIR」変数の中身はsettings.pyの中に記載されていて、以下になっています。

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

「os.path.dirname(os.path.abspath(__file__)))」とは、まずos.path.dirname(path)で、pathの中身をディレクトリ名を返す関数です。

「os.path.abspath(__file__)」とは、Pythonで実行中のファイルパスを取得することができる関数です。

まとめると、TEMPLATESの中身は以下のようになります。

'DIRS': [os.path.join(BASE_DIR, 'templates')],
  ↓
’DIRS':Pythonで実行中のファイルパス名+templates

例)もしもPython実行中のファイルパスが「/home/python/myapp」の場合
’DIRS':/home/python/myapp/templates

ちなみに、TEMPLATESのDIRSは、テンプレートを探す対象フォルダのリストになります。

詳細な説明は以下を参照ください。

続いて、ログインした後に表示するリダイレクト先の設定をするため、「LOGIN_REDIRECT_URL = '/'」を追加しています。

次に先ほど指定した「templates」ディレクトリを作成します。
また、templatesの直下にさらに「registration」というフォルダを作成します。

Djangoのユーザ認証機能を使用する場合はデフォルトで、「registration/login.html.」となっているため、この名前は変えてはいけません。

フォルダ構成:myapp>templates>registration

urls.pyにルーティングを追加します。

ファイル:myapp>myapp>urls.py

コード:

from django.contrib import admin
from django.urls import path, include
from django.views.generic import RedirectView

urlpatterns = [
   path('admin/', admin.site.urls),
   path('lunchmap/', include('lunchmap.urls')),
   path('accounts/', include('django.contrib.auth.urls')), #追加
   path('', RedirectView.as_view(url='/lunchmap/')),
]

urlptternsに「path('accounts/', include('django.contrib.auth.urls'))」を追加します。

本日はここまでです。

次回はログインとログアウト画面を作成していきます。

ありがとうございました。





この記事が気に入ったらサポートをしてみませんか?