Python day36_Flask入门
视图及路由
简介
Web框架
什么是Web框架?
- 协助开发者快速开发 Web 应用程序的一套功能代码
- 开发者只需要按照框架约定要求,在指定位置写上自己的业务逻辑代码
为什么用Web框架?
- 稳定性和可扩展性强
- 可以降低开发难度,提高开发效率。
在python中有哪些Web框架?
- flask
- django
- tornado
Flask简介
Flask诞生于2010年,用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架.
其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是 Flask 框架的核心
05.jpg-
Werkzeug实现路由、调试和Web服务器网关接口
-
Jinja2实现了模板。
-
Werkzeug是一个遵循WSGI协议的python函数库
- 其内部实现了很多Web框架底层的东西,比如request和response对象;
- 与WSGI规范的兼容;支持Unicode;
- 支持基本的会话管理和签名Cookie;
- 集成URL请求路由等。
Werkzeug库的 routing 模块负责实现 URL 解析。不同的 URL 对应不同的视图函数,routing模块会对请求信息的URL进行解析,匹配到URL对应的视图函数,执行该函数以此生成一个响应信息
routing模块内部有:
- Rule类
用来构造不同的URL模式的对象,路由URL规则
- Map类
存储所有的URL规则和一些配置参数
- BaseConverter的子类
负责定义匹配规则
- MapAdapter类
负责协调Rule做具体的匹配的工作
Flask 本身相当于一个内核,其他几乎所有的功能都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。
Flask 相关文档:
Flask常用扩展包:
- Flask-SQLalchemy:操作数据库;
- Flask-script:插入脚本;
- Flask-migrate:管理迁移数据库;
- Flask-Session:Session存储方式指定;
- Flask-WTF:表单;
- Flask-Mail:邮件;
- Flask-Bable:提供国际化和本地化支持,翻译;
- Flask-Login:认证用户状态;
- Flask-OpenID:认证;
- Flask-RESTful:开发REST API的工具;
- Flask-Bootstrap:集成前端Twitter Bootstrap框架;
- Flask-Moment:本地化日期和时间;
- Flask-Admin:简单而可扩展的管理接口的框架
扩展列表:http://flask.pocoo.org/extensions/
Flask 虚拟环境
为什么要搭建虚拟环境?
原因:
如果在一台电脑上, 想开发多个不同的项目, 需要用到同一个包的不同版本, 如果直接在终端安装, 在同一个目录下安装或者更新, 新版本会覆盖以前的版本, 其它的项目就无法运行了
解决:
使用虚拟环境
- 虚拟环境可以搭建独立的python运行环境, 使得单个项目的运行环境与其它项目互不影响
- 所有的虚拟环境都位于/home/下的隐藏目录.virtualenvs下
- 在开发过程中, 当需要使用python的某些工具包/框架时需要联网安装
如何搭建虚拟环境?
说明:下面指令都是在终端窗口运行
安装虚拟环境的命令 (在根目录下):
sudo pip install virtualenv
sudo pip install virtualenvwrapper
创建虚拟环境的命令:
python2中:
如果不指定 默认就是python2
mkvirtualenv 虚拟环境名称
例 :
mkvirtualenv py2_flask
python3中:
mkvirtualenv -p python3 虚拟环境名称
例 :
mkvirtualenv -p python3 py3_flask
在虚拟环境中安装flask:
sudo pip install flask==0.10.1
创建完成后,默认是进入虚拟环境的 提示符最前面会出现 “虚拟环境名称”
view.JPG如何使用虚拟环境?
进入、查看虚拟环境:
workon 虚拟环境名称 (如果忘记可用两次tab键 查看创建的虚拟环境名称)
退出虚拟环境:
deactivate
删除虚拟环境:
rmvirtualenv 虚拟环境名称
例 :删除虚拟环境py3_flask
先退出:deactivate
再删除:rmvirtualenv py3_flask
虚拟环境中安装工具包位置
python2版本下:
~/.virtualenvs/py2_flask/lib/python2.7/site-packages/
python3版本下:
~/.virtualenvs/py3_flask/lib/python3.5/site-packages
查看在虚拟环境中安装了哪些工具包:
pip freeze