今天无意看到 django 3.1 的升级记录就开始更新 django 了,然而只是更新了核心文件,项目层的都没有变,
就需要手动改从 3.0.* 升到 3.1 的文件
很想说,官方还没有完全改完吧... 因为只改了 settings 的文件(要不去提交一波 只需要把 settings 的 os 改成
from pathlib import Path BASE_DIR = Path(__file__).resolve(strict=True).parent.parent如果你想再把自己的静态文件和媒体文件给改一下
STATICFILES_DIRS = [str(BASE_DIR / Path('assets') / Path('static')), ] STATIC_URL = '/assets/static/' MEDIA_ROOT = str(str(BASE_DIR / Path('assets') / 'uploads')) MEDIA_URL = '/assets/uploads/'os 模块改成 -> pathlib 模块
因为要去修改,特地得补了下 python pathlib 模块的知识
最底下有两个模块的对比
看完了官方文档,卧槽,太乱了,什么好感都没有
然后,我去谷歌了一把,果然看到了好多对 pathlib 模块的添狗文章 而且因为 django 的更新,微信公众号也多了好多了对这个模块的介绍

都是因为他们喜欢短的

这是我自己使用两个模块的对接,当知道 / 的操作,还真的挺爽的,好感度有这么上升 唯一不好的是,输出不是纯字符,得自己格式化 .... 觉得舒服的应该就是这个写法吧
那好,我们来分析一下官方文档,
正如官方所说 from pathlib import Path 是主类,主要功能在这里
可以粗略地看完纯路径和通用性质
斜杠 / 操作符有助于创建子路径,就像 os.path.join() 一样,就像上面一样,使用 / 连接,挺爽的
基本用法是:
p = Path('/home/ubuntu')
返回一个对象,PosixPath('/home/ubuntu'),所以我上面说可以粗略代过
str(p) # 返回字符串 '/home/ubuntu'
它可以用 parents 访问父级 因为是面对对象且是 Path 主类,既可以直接通过 p.操作访问后缀啊等等,而且可以不再是嵌套调用 它还可以直接读取文件,写入文件,创建文件,不需要 with open 操作了
