@gzm1997
2018-03-14T09:56:38.000000Z
字数 1146
阅读 1810
flask深入学习
这篇短文写在我的腾讯一面搞砸之后,这次面试让我深刻认识到我一直是一个很功利的人。总结了一下一共有几个要点:
- 看需求办事,有什么需求谷歌什么,查看文档相关部分,而其他的部分置之不理,全然没有深入学习的决心
- 对一个框架没有深入了解,仅仅止步于工具化,也没有对框架有更深层的了解,这让我很惭愧
- 做事没有从工程层面来思考问题,仅仅从个人角度思考问题
假设有如下情况,my_app是封装为包的一个flask app,app声明在my_app/__init__.py文件中,h.py是包内的一个辅助模块,在run_app.py中调用my_app这个包的flask app进行运行
当情况是运行run_app.py,而h.py需要加载static中静态文件的时候,在h.py中使用的路径可以是两种情况:
注意包调用情况下,如果包内非__init__模块要加载static内静态文件,需要使用从包外路径开始定位
当情况是运行run_app.py,html内需要加载静态文件,路径必须是相对路径,形式为:/static/file_name
flask除了提供 app.static_folder和app.template_folder之外
flask还提供了instance_path
instance_path也可以用来存放静态文件,但是要注意的是instance_path所在的位置
flask文档对instance_path位置的阐述如下:
/myapp.py
/instance
/myapp
/__init__.py
/instance
$PREFIX/lib/python2.X/site-packages/myapp
$PREFIX/var/myapp-instance
$PREFIX 是你 Python 安装的前缀。这个前缀可以是 /usr 或者你的 virtualenv 的路径。你可以打印 sys.prefix 的值来查看前缀被设置成了什么
所以上面已经阐述得很清楚了,在我们包调用的情况下,instance_path是跟my_app并列的位置上的,所以可以在my_app/__init__.py内的app使用app.instance_path来加载位于与my_app并列的instance中的静态文件,如下: