全局设置中路径的配置

在settings.py文件中进行模板,静态文件等的路径配置刚开始把我给绕晕了,以前没有接触到路径这一块时总感觉绝对路径多么多么好,简洁明了一眼就能看出是哪个盘哪个文件,最后发现只有windos系统才有盘符,其他系统都没有这个玩意,还有反斜杠,瞬间觉得微软才是异类.

在settings.py中BASE_DIR代表当前根目录文件的路径

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

刚开始的连续的三个os.path真的把我吓住了,一眼看上去真的很复杂,然后我从里层从外层打印,分清了os.path.abspath和os.path.dirname的区别

1
2


1
2
3
4
5
C:\Users\29427\Desktop\sub_py
C:\Users\29427\Desktop\sub_py\test_path.py
C:\Users\29427\Desktop
C:\Users\29427
C:\Users\29427\Desktop

所以abspath是获得该文件的绝对路径包括文件名,dirname是获得该文件的绝对路径不包括文件名.

由上可以得出,BASE_DIR可以用下述代码进行替换

1
BASE_DIR = os.path.dirname(os.path.dirname(__file__))

在全局配置中的BASE_DIR最后得到的路径就是项目根目录的路径,将这个路径与template,media,static文件夹相拼接,就得到了相应所需的路径,比如

1
2
STATIC_URL = '/static/'
STATICFILES_DIRS = os.path.join(BASE_DIR, STATIC_URL)