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

Posted

技术标签:

【中文标题】Django新版本3.1,设置文件有一些变化【英文标题】:Django new version 3.1, the settings file have some changes 【发布时间】:2020-12-05 17:17:00 【问题描述】:

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

【问题讨论】:

【参考方案1】:
STATIC_ROOT = BASE_DIR.parent / "static_cdn"

如果你想在环境目录中添加你的 STATIC_ROOT 试试这个

【讨论】:

【参考方案2】:

此更改使您可以更轻松地定义 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/'

【讨论】:

以上是关于Django新版本3.1,设置文件有一些变化的主要内容,如果未能解决你的问题,请参考以下文章

发布新版本的应用程序会删除旧版本的文件吗?

ios coredata 会在新版本中更改实体属性导致崩溃

新版本 Django 中 DateModifierNode 的替代品是啥

SpringCloudStream实战拆解以及3.1后新版本特性分析

EasyNVR 5.0.0新版本填写RSTP流发生变化问题排查

新版本MySQL Server 5.7的免安装版本设置