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ファイルが入っている場所と覚えると良いでしょう。