能够根据步骤安装虚拟环境
能够创建 Py2 和 Py3 版本的虚拟环境
能够使用 pip 命令安装指定版本 Flask 及其他扩展
能够写出 Flask 从对象中加载配置的代码
Web(World Wide Web)诞生最初的目的,是为了利用互联网交流工作文档。
Web框架是协助开发者快速开发 Web 应用程序的一套功能代码,开发者只需要按照框架约定要求,在指定位置写上自己的业务逻辑代码
例如:在某个区需要成立一家医院,有两种方式:
1.圈地,打地基,盖楼,装修,入驻
2.买楼,装修,入驻
为什么要用Web框架?
web网站发展至今,特别是服务器端,涉及到的知识、内容,非常广泛。这对程序员的要求会越来越高。如果采用成熟,稳健的框架,那么一些基础的工作,比如,安全性,数据流控制等都可以让框架来处理,那么程序开发人员可以把精力放在具体的业务逻辑上面。
使用框架的优点:
- 稳定性和可扩展性强
- 可以降低开发难度,提高开发效率。
总结一句话:避免重复造轮子
在 Python 中常用的 Web 框架有
- flask
- django
- tornado
Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架。
Flask 本身相当于一个内核,其他几乎所有的功能都要用到扩展(邮件扩展Flask-Mail,用户认证Flask-Login,数据库Flask-SQLAlchemy),都需要用第三方的扩展来实现。比如可以用 Flask 扩展加入ORM、窗体验证工具,文件上传、身份验证等。Flask 没有默认使用的数据库,你可以选择 MySQL,也可以用 NoSQL。
其 WSGI 工具箱采用 Werkzeug(路由模块),模板引擎则使用 Jinja2。这两个也是 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/
虚拟环境:python环境的复制。
在开发过程中,当需要使用 python
的某些工具包/框架时需要联网安装
比如联网安装Flask框架flask-0.10.1
版本
sudo pip install flask==0.10.1
flask-0.10.1
安装到 /usr/local/lib/python2.7/dist-packages
路径下解决方案:虚拟环境
作用:虚拟环境
可以搭建独立的 python 运行环境
, 使得单个项目的运行环境与其它项目互不影响.
所有的虚拟环境
都位于/home/
下的隐藏目录.virtualenvs
下
一个python环境中(python2.7),安装某个包,只能安装这个包的一个版本(新版本会覆盖以前的版本)。
前提:保证Ubuntu联网(能够ping通www.baidu.com即可)
1.以管理员身份运行如下命令:
sudo pip install virtualenv
2.以管理员身份执行如下命令:
sudo pip install virtualenvwrapper
3.执行命令:mkvirtualenv 提示未找到命令,进入第4步
4.在Home家目录执行如下指令:mkdir .virtualenvs
创建好之后去修改.bashrc文件:vim .bashrc
在最后添加如下配置代码,如下图所示:
if [ -f /usr/local/bin/virtualenvwrapper.sh ]; then
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3
source /usr/local/bin/virtualenvwrapper.sh
fi
然后重新载入,执行:source .bashrc
那么将来创建的虚拟环境默认都是Python3了
默认就是创建的Python3的虚拟环境:mkvirtualenv py3_flask
也可以通过-p指定Python版本:mkvirtualenv -p python3 py3_flask2
如果想创建Python2版本的环境,使用如下命令:
执行workon命令敲回车,就可以看到所有的虚拟环境了
进入到某一个环境,执行命令:workon py3_flask就选中了当前的这个虚拟环境
安装flask,先选中虚拟环境,然后执行如下命令:pip install flask==0.10.1命令
查看虚拟环境中安装的包: pip freeze
使用虚拟环境总结:
# 创建的Python3的虚拟环境: mkvirtualenv py3_flask # 删除虚拟环境的命令 : rmvirtualenv 虚拟环境名称 # 选中当前的这个虚拟环境: workon py3_flask # 安装flask: pip install flask==0.10.1 # 查看虚拟环境的命令: workon 两次tab键 # 使用虚拟环境的命令: workon 虚拟环境名称 # 退出虚拟环境的命令: deactivate # python3版本下安装flask-0.10.1的包: pip install 包名称 # 查看虚拟环境中安装的包: pip freeze
打开 Pycharm,创建 Pure Python
类型的项目,创建项目完成之后选择之前创建的 py3_flask
作为虚拟环境
友情提示:第 4 步路径可以通过在指定虚拟环境下,输入
which python
获得
新建文件 helloworld.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return 'Hello World'
if __name__ == '__main__':
app.run()
在上一节实现了一个最简单的 Flask 应用程序,只使用了7行(最基本的)代码,接来对 Flask 程序的创建,运行配置做进一步的了解,具体有:
- Flask 程序初始化参数
- Flask 程序相关配置加载方式
- app.run() 参数
Flask 程序实例在创建的时候,需要默认传入当前 Flask 程序所指定的包(模块),接下来就来详细查看一下 Flask 应用程序在创建的时候一些需要我们关注的参数:
import_name
- Flask程序所在的包(模块),传
__name__
就可以- 其可以决定 Flask 在访问静态文件时查找的路径
static_path
- 静态文件访问路径(不推荐使用,使用 static_url_path 代替)
static_url_path
- 静态文件访问路径,可以不传,默认为:
/ + static_folder
static_folder
- 静态文件存储的文件夹,可以不传,默认为
static
template_folder
- 模板文件存储的文件夹,可以不传,默认为
templates
在 Flask 程序运行的时候,可以给 Flask 设置相关配置,比如:配置 Debug 模式,配置数据库连接地址等等,设置 Flask 配置有以下三种方式:
1.从配置对象中加载(常用)
app.config.form_object()
2.从配置文件中加载
app.config.form_pyfile()
3.从环境变量中加载(了解)
app.config.from_envvar()
以下演练以设置应用程序的 DEBUG(调试模式) 为例,设置应用为调式模式这后,可以实现以下功能:
- 程序代码修改后可以自动重启服务器
- 在服务器出现相关错误的时候可以直接将错误信息进行抛出到控制台打印
从配置对象中加载,创建配置的类,代码如下:
# 配置对象,里面定义需要给 APP 添加的一系列配置
class Config(object):
DEBUG = True
# 创建 Flask 类的对象,指向程序所在的包的名称
app = Flask(__name__)
# 从配置对象中加载配置
app.config.from_object(Config)
运行测试,在修改代码之后直接保存,会自动重启服务器
创建配置文件 config.ini
,在配置文件中添加配置
使用代码去加载配置
# 创建 Flask 类的对象,指向程序所在的包的名称
app = Flask(__name__)
# 从配置文件中加载配置
app.config.from_pyfile("config.ini")
编辑运行的相关配置
config.ini路径如何copy.如下
使用代码去加载配置
# 创建 Flask 类的对象,指向程序所在的包的名称
app = Flask(__name__)
# 加载指定环境变量名称所对应的相关配置
app.config.from_envvar('FLASKCONFIG')
注:Flask 应用程序将一些常用的配置设置成了应用程序对象的属性,也可以通过属性直接设置/获取某些配置:app.debug = True
可以指定运行的主机IP地址,端口,是否开启调试模式
app.run(host="192.168.21.23", port=5000, debug=True)
注:此时 127.0.0.1 IP地址就不能用了
解决方案:可以配置一个万能ip:0.0.0.0
app.run(host="0.0.0.0", port=5000, debug=True)