今天无意看到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的更新,微信公众号也多了好多了对这个模块的介绍
[button href="https://www.dongwm.com/post/use-pathlib/"]感觉挺好的文章[/button]
都是因为他们喜欢短的@(笑尿)
这是我自己使用两个模块的对接,当知道 / 的操作,还真的挺爽的,好感度有这么上升
唯一不好的是,输出不是纯字符,得自己格式化
....
@(笑尿) 觉得舒服的应该就是这个写法吧
那好,我们来分析一下官方文档,
正如官方所说from pathlib import Path
是主类,主要功能在这里
可以粗略地看完纯路径和通用性质
斜杠 / 操作符有助于创建子路径,就像 os.path.join() 一样,就像上面一样,使用/连接,挺爽的
基本用法是
p = Path('/home/ubuntu')
返回一个对象,PosixPath('/home/ubuntu'),所以我上面说可以粗略代过
str(p) 返回字符串'/home/ubuntu'
它可以用parents访问父级
因为是面对对象且是Path主类,既可以直接通过p.操作访问后缀啊等等,而且可以不再是嵌套调用
它还可以直接读取文件,写入文件,创建文件,不需要with open操作了