settings.pyでの設定
Djangoプロジェクト上でアプリケーションを作成した直後は初期設定の状態になっているため、アプリケーションの登録、テンプレートディレクトリのパスの疎通、タイムゾーン、言語設定を変更する手順をこの記事でまとめる。
前回の記事ではアプリケーションの作成を行った。
現在のディレクトリ構成は以下の通り。
■ディレクトリ構成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
デスクトップ └Blog ├Blog_app │ ├migrations │ ├__init__.py │ ├adming.py │ ├apps.py │ ├models.py │ ├tests.py │ └views.py ├db.sqlite3 ├config ├env_blog └manage.py |
settings.pyでの設定手順
~デスクトップ/Blog/config/settings.py
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 |
#アプリケーションの登録 INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'Blog_app', #追記。これによりアプリケーションをDjangoに認識させる。 #テンプレートディレクトリの設定 TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [BASE_DIR / 'templates'], #[BASE_DIR/'template']を記述。 BASE_DIRはBlogディレクトリを指す。 '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', ], }, }, ] #言語とタイムゾーンの設定 #LANGUAGE_CODE = 'en-us' LANGUAGE_CODE = 'ja' #en-usから変更 #TIME_ZONE = 'UTC' TIME_ZONE = 'Asia/Tokyo' #UTCから変更 |
settings.pyを開いて変更を加える。
INSTALLED_APPSの最後の行にBlog_app(アプリケーションディレクトリであり、今回作成したアプリケーション名)を追記することで、DjangoにBlog_appを認識させる。
続いて、ルートディレクトリ内にこれから作成するtemplatesディレクトリへのパスを通すため、TEMAPLATES内のDIRSに[BASE_DIR / ‘templates’]を追記。
併せてルートディレクトリにtemplatesディレクトリを作成しておく。
この時、ルートディレクトリに作成するtemplatesディレクトリ名と、”[BASE_DIR / ‘templates’]”のtemplatesの名称は一致させておく必要がある。
※一致していないとパスが通らない
以下余談。
BASE_DIRにはBlogディレクトリの絶対パスが格納されている。
以下はsettings.pyでのBASE_DIRの定義。
“BASE_DIR = Path(__file__).resolve().parent.parent”
分解すると以下の通りになる。
→__file__にはsettings.pyのファイル名が格納
→Path(__file__)はsettings.pyのパスが格納
→Path(__file__).resolve()はsettings.pyの絶対パスが格納
→Path(__file__).resolve()はsettings.pyの親ディレクトリの絶対パス
※つまりconfigディレクトリの絶対パス
→Path(__file__).resolve().parent.parentはsettings.pyの親ディレクトリの親ディレクトリの絶対パス
※つまりBlogディレクトリの絶対パスが格納
なので、[BASE_DIR / “templates”]と指定すると、Blog/templatesディレクトリのパスを指定することになる。
余談終わり。
余談2
Djangoのチュートリアルによってはルートディレクトリ(Blog)ではなく、アプリケーションディレクトリ(Blog_app)にtemplatesを作成することがある。
ルートディレクトリに作成したのは、このBlogプロジェクト全体で共有するtemplatesディレクトリを作成したという意味がある。
templatesディレクトリをアプリケーションディレクトリ(Blog_app)に作成すると、そのアプリケーション内だけで適用するtemplatesディレクトリになる。
Blogプロジェクト内で複数のアプリケーションを作成し、かつtemplatesを共有する場合は今回のようにルートディレクトリ(Blog)にtemplates作成も使える。
今回はアプリケーションは1つだけ作成するので、この次の記事で、ルートディレクトリ(Blog)からアプリケーションディレクトリ(Blog_app)にtemplatesディレクトリを移動させ、そのパスをDjangoに認識させる。
余談2終わり。
ルートディレクトリにtemplatesディレクトリを作成したことでディレクトリ構成は以下の通りになる。
■ディレクトリ構成
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
デスクトップ └Blog #変数BASE_DIRが持つパスはここを指す ├Blog_app │ ├migrations │ ├__init__.py │ ├adming.py │ ├apps.py │ ├models.py │ ├tests.py │ └views.py ├db.sqlite3 ├config ├env_blog ├templates #今回新規作成 └manage.py |
コメント