見出し画像

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'))」を追加します。

本日はここまでです。

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

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





この記事が気に入ったら、サポートをしてみませんか?
気軽にクリエイターの支援と、記事のオススメができます!
ありがとうございます!よかったらシェアもお願いします。
9
●好きなこと:新しいことにチャレンジする ●得意なこと:習慣を新しく作ること ●Twitter:SHIN@59073562 ●ブログ:https://network-beginner.xyz ●ココナラ: https://coconala.com/services/1003532

こちらでもピックアップされています

【有料】36歳がDjangoで管理機能を作ってみた
【有料】36歳がDjangoで管理機能を作ってみた
  • 9本

このマガジンは36歳の人がpaizaという学習サイトを使って、前回作成したランチマップアプリにユーザ管理機能を追加するためのものです。 paizaの有料部分をまとめているため、記事はすべて有料になっています。 たまに、無料のものもあります。

コメントを投稿するには、 ログイン または 会員登録 をする必要があります。