Djangoの新しいバージョン3.1、設定ファイルにいくつかの変更があります

Aug 16 2020

Djangoの新しいバージョン3.1では、設定ファイルにいくつかの変更があり、静的ファイルの設定をどのように進める必要があるかを尋ねるようになりました。私が通常行っていた方法は、それ以上機能しません。

最終バージョン:

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

バージョン3.1:

from pathlib import Path
BASE_DIR = Path(__file__).resolve(strict=True).parent.parent

私は通常、静的ファイルを次のように設定します。

STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'static')
]
STATIC_ROOT = os.path.join(BASE_DIR, 'static_root')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media_root')

挿入するimport osとうまくいきますが、それは正しい習慣ですか?これを設定するためのベストプラクティスは何ですか?ありがとうございました?

回答

6 Roham Aug 16 2020 at 18:59

この変更によりSTATICMEDIA変数の定義がはるかに簡単になります。osこの目的のためにインポートする必要はありません。必要なのは、次のコードを追加することだけですsettings.py

BASE_DIR = Path(__file__).resolve(strict=True).parent.parent # which shows the root directory of your project

STATIC_ROOT = BASE_DIR / 'static' # is equal to os.path.join(BASE_DIR, 'static/')
STATIC_URL = '/static/'

MEDIA_ROOT = BASE_DIR / 'media' # is equal to os.path.join(BASE_DIR, 'media/')
MEDIA_URL = '/media/'
Ankit Nov 17 2020 at 13:44
STATIC_ROOT = BASE_DIR.parent / "static_cdn"

環境ディレクトリ内にSTATIC_ROOTを追加する場合は、これを試してください