Django 3.1新版本,设置文件有一些变化

Django new version 3.1, the settings file have some changes

在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 会起作用,但这是正确的做法吗? 设置这个的最佳做法是什么? 谢谢?

此更改使您可以更轻松地定义 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/'
STATIC_ROOT = BASE_DIR.parent / "static_cdn"

如果你想在环境目录

中添加你的STATIC_ROOT,试试这个