• 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の効率的なスキルアップに、
       是非お役立て下さい。