在了解如何上传图片之前,我们很有必要理解一项基本配置。
my_blog=os.path.dirname(os.path.dirname(__file__))
'''
本来想my_blog重命名为BASE_DIR,但系统报错`ImportError: No module named 'BASE_DIR'`,错误很新鲜,一直没有调过来。my_blog 也好BASE_DIR也好,不影响我们的理解。
'''
os.path.dirname()
函数是什么?相应的os.path.join()
,os.path.abspath()
又是什么鬼?
# os.path.abspath()返回的是文件的绝对路径
import os
def print_path(p):
print('Settings.py路径:',os.path.abspath(p))
if __name__=='__main__':
print('当前路径',os.getcwd())
print_path('settings.py')
'''
当前路径 E:\My_Blog-master\my_blog
Settings.py路径: E:\My_Blog-master\my_blog\settings.py
'''
# os.path.dirname()返回文件的文件夹。
import os
def print_path(p):
print('Settings.py路径:',os.path.dirname(__file__))
if __name__=='__main__':
print('当前路径',os.getcwd())
print_path('settings.py')
'''
当前路径 E:\My_Blog-master\my_blog
Settings.py路径: E:/My_Blog-master/my_blog #url的形式
'''
第二段代码也可以这么写:结果是一样一样的!
# 结果是一样的,如果忽略符号差异`\`和`/`的话
import os
def print_path(p):
print('Settings.py路径:',os.path.dirname(os.path.abspath(p)))
if __name__=='__main__':
print('当前路径',os.getcwd())
print_path('settings.py')
'''
当前路径 E:\My_Blog-master\my_blog
Settings.py路径: E:\My_Blog-master\my_blog
'''
os.path.join()的作用?(针对os.path.dirname(os.path.abspath(p))和os.path.dirname(_file_)分别给出结果)
'''
前提:os.path.dirname(os.path.abspath(p))
链接前:E:\My_Blog-master\my_blog
链接后:连接后的地址是 E:\My_Blog-master\my_blog\test
'''
def print_join_path(p):
print('连接后的地址是',os.path.join('E:\My_Blog-master\my_blog',p))
if __name__=='__main__':
print_join_path('test')
'''
前提:os.path.dirname(__file__)
链接前:E:/My_Blog-master/my_blog
链接后:E:/My_Blog-master/my_blog\test
'''
def print_join_path(p):
print('连接后的地址是',os.path.join(' E:/My_Blog-master/my_blog',p))
if __name__=='__main__':
print_join_path('test')
从以上链接的结果看,
my_blog=os.path.dirname(os.path.dirname(__file__))
os.path.join(my_blog, 'db.sqlite3')
最终的结果是:E:/My_Blog-master/my_blog\db.sqlite3。
至于这么奇怪的路径,居然还能用,就不继续深究了(把时间花在刀刃上)。
结论:adspath返回的是绝对路径,dirname返回的是url路径,也就是满足django开发需要的路径。所以,一般都用dirname(_file_)
结论:adspath返回的是绝对路径,dirname返回的是url路径,也就是满足django开发需要的路径。所以,一般都用dirname(_file_)
结论:adspath返回的是绝对路径,dirname返回的是url路径,也就是满足django开发需要的路径。所以,一般都用dirname(_file_)
一句话总结一下,url格式的路径才有用!下一篇接着这个继续写。。。