Python 3.5.2
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = '/static/'
我想加入他们:
STATIC_ROOT = os.path.join(PROJECT_PATH, STATIC_URL)
结果是“/static/”。
这是文档: https://docs.python.org/3/library/os.path.html
我们可以读到“如果一个组件是绝对路径,则所有先前的组件都会被丢弃,并从绝对路径组件继续连接。”
在我的例子中,调试器中的 BASE_DIR 是“/home/michael/PycharmProjects/photoarchive/photoarchive”。
嗯,这是绝对路径。嗯,它是通过abspath函数获取的。
因此,第一个组件 - BASE_DIR - 是绝对路径。
你能告诉我为什么它被扔掉吗? 以及如何获取“/home/michael/PycharmProjects/photoarchive/photoarchive/static”?
最佳答案
“如果组件是绝对路径,则所有先前的组件都会被丢弃,并从绝对路径组件继续连接。”此处适用:STATIC_URL
是绝对路径,因为它以 /
开头,因此 BASE_DIR
被删除。
删除前导 /
,否则 dirname 认为 STATIC_URL
是绝对的,并仅保留它。
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
STATIC_URL = 'static/'
关于python - os.path.join - 如何处理绝对路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39307631/