BASE_DIRを分かりやすく解説【これで場所と構造がわかります】 - code for Django

BASE_DIRを分かりやすく解説【これで場所と構造がわかります】

djangoのsettings.pyファイルを見ていると、BASE_DIRという変数があります。

このBASE_DIRについて理解しておくと、Djangoの設定を進めていく上でイメージがわきやすいです。

そこで今回は、BASE_DIRの設定方法について見ていきましょう。

BASE_DIRはmanage.pyファイルがある場所

BASE_DIRとは、その名の通りdjangoにおいて基本となるフォルダのことです。

色々なファイルを探す時などにおいて、BASE_DIRを基準として探されたりしていることが多いです。

そして、その場所というのは、manage.pyファイルがおかれている場所(フォルダ)です。

ここから、具体的なコードを見ながらBASE_DIRについて理解を深めていきましょう。

settings.pyから、BASE_DIRを確認する

BASE_DIRのデフォルトの設定をみていきます。

コード

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

非常に長いコードがでてきました。

順番にこのコードの中身について見ていきましょう。

まずは、__file__です。これは実行しているファイル名がそのまま表示されます。

つまり、settings.pyと表示されます。ですので、__file__をsettings.pyに置き換えましょう。

次に、os.path.abspath(settings.py)です。

これは、settings.pyファイルまでの絶対パスを表示します。

具体的には、/home/your-name/folder-name/project-name/settings.pyといった形です。

/home/your-name/までの部分は、コンピューターの環境によって異なります。

ですので、BASE_DIRはこのようになります。

コード

BASE_DIR = os.path.dirname(os.path.dirname(/home/your-name/folder-name/project-name/settings.py))

(どんどん長くなってきてしまいました。。)

次にいきましょう。

os.path.dirnamは対象となるpath(ファイル)が入っているフォルダを示します。

つまり、今回の場合はsettings.pyが入っているフォルダが表示されます。

具体的には、このようになります。

コード

BASE_DIR = os.path.dirname(/home/your-name/folder-name/project-name/)

次が最後です。最後にもう一度os.path.dirname関数が使われています。

これは、同じフォルダを指すように思われるのですが、実はそうではありません。

ファイル名が無い時にこの関数を使うと、一段フォルダの階層が上がるのです。

つまり、上記の場合はproject-nameが消えます。

結果として、BASE_DIRは/home/your-name/folder-nameとなるのです。

そして、この場所はまさしくmanage.pyファイルが入っている場所です。

つまり、BASE_DIRはmanage.pyファイルが入っている場所と覚えると良いでしょう。

~Django無料講義~のご案内

Code for Djangoが、4時間超の無料Django講義をはじめました

  •  ・本を出版したCode for Djangoの
     製作者が作ったサイトです。
  •  ・Code for Djangoの内容も、
     動画で詳しく解説しています。
  •  ・動画は順次ふやしていきますので、
     ただで学び続けることが可能です。
  •  ・Djangoの効率的なスキルアップに、
     是非お役立て下さい。
Created with