Flask Web 基本开发

1.虚拟环境
为什么要搭建虚拟环境?
  • 在开发过程中, 当需要使用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
如何搭建虚拟环境?
  • 安装虚拟环境的命令 :
sudo pip install virtualenv
sudo pip install virtualenvwrapper
安装完虚拟环境后,如果提示找不到mkvirtualenv命令,须配置环境变量:
1、创建目录用来存放虚拟环境
mkdir 
$HOME/.virtualenvs# 2、打开~/.bashrc文件,并添加如下:
export WORKON_HOME=$HOME/.virtualenvs
source /usr/local/bin/virtualenvwrapper.sh# 3、运行
source ~/.bashrc
创建虚拟环境的命令 :
  • 提示:如果不指定python版本,默认安装的是python2的虚拟环境
在python2中,创建虚拟环境
mkvirtualenv 虚拟环境名称
例 :
mkvirtualenv py_flask
在python3中,创建虚拟环境
mkvirtualenv -p python3 虚拟环境名称
例 :

mkvirtualenv -p python3 py3_flask


提示 :
  • 创建虚拟环境需要联网
  • 创建成功后, 会自动工作在这个虚拟环境上
  • 工作在虚拟环境上, 提示符最前面会出现 “虚拟环境名称”
如何使用虚拟环境?
  • 查看虚拟环境的命令 :workon 两次tab键
  • 使用虚拟环境的命令 :
workon 虚拟环境名称例 :使用python2的虚拟环境
workon py_flask例 :使用python3的虚拟环境
workon py3_flask
  • 退出虚拟环境的命令 :deactivate
  • 删除虚拟环境的命令 :
rmvirtualenv 虚拟环境名称例 :删除虚拟环境py3_flask先退出:deactivate
再删除:rmvirtualenv py3_flask

如何在虚拟环境中安装工具包?
提示 : 工具包安装的位置 :
  • python2版本下:
  • ~/.virtualenvs/py_flask/lib/python2.7/site-packages/
  • python3版本下:
  • ~/.virtualenvs/py3_flask/lib/python3.5/site-packages
python3版本下安装flask-0.10.1的包 :
pip install 包名称例 : 安装flask-0.10.1的包
pip install flask==0.10.1
  • 查看虚拟环境中安装的包 :pip freeze
2.实现一个简单的Demo
from flask import Flask
from flask import abort
from flask import redirect

app = Flask(__name__)

@app.route('/')
def index():
    return '<h1>Hello Python!</h1>'

@app.route('/user/<name>')
def Hello_world(name):
    if name == 'baidu':
        return redirect('http://www.baidu.com')
    elif name == 'NO':
        return abort(404)
        
    return '<h1> Hello,%s </h1>' % name

if __name__ == '__main__':
    app.run(debug=True)

从Demo中学习路由、修饰器、视图函数、请求、响应概念,一步步分析每行代码:

1.from flask import Flask

从flask库中导入Flask函数,from flask import abortfrom flask import redirect同理。

2.app = Flask(__name__)

创建Flask对象app,Flask类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。在大多数程序中,Python的__name__变量就是所需要的值。

3.@app.route('/')

客户端(例如web浏览器)把请求发送给Web服务器,Web服务器再把请求发送给Flask程序实例。程序实例需要知道对每个URL请求运行哪些代码,所以保存了一个URL到Python函数的映射关系。处理URL和函数之间的关系的程序称为路由。

在Flask程序中定义路由的最简便方式,是使用程序实例提供的app.route修饰器,把修饰的函数注册为路由。

修饰器是Python语言的标准特性,可以使用不同的方式修改函数的行为。惯常用法是使用修饰器把函数注册为事件的处理程序。

4.def index():函数

index()函数放在@app.route('/')后面,所以就是把index()函数注册为路由。

如果部署程序的服务器域名为www.example.com,在浏览器中访问www.example.com后,会触发服务器执行index()函数。

5.@app.route('/user/<name>')

@app.route('/'),如果部署程序的服务器域名为www.example.com,在浏览器中访问www.example.com/user/tom后,会触发服务器执行下方修饰函数sayHello(name)

6.Hello_world(name)函数

    if name == 'baidu':
        return redirect('http://www.baidu.com')
    elif name == 'NO':
        return abort(404)
        
    return '<h1> Hello, %s </h1>' % name

假定部署程序的服务器域名为www.example.com

在浏览器中访问www.example.com/user/baidu,那么redirect()函数就直接链接到百度了。

注意的是,在使用redirect()函数之前,必须使用from flask import redirect从flask库中导入redirect()函数。

在浏览器中访问www.example.com/user/NO,那么abort()函数就会触发。

abort()函数用于处理错误,abort(404)返回404错误,abort()函数不会把控制权交还给调用它的函数,而是抛出异常把控制权交给Web服务器。

在浏览器中访问www.example.com/user/tom,那么会正确执行,在浏览器中显示Hello,tom

7.if __name__ == '__main__':

当Python解释器,读py文件,它会执行它发现的所有代码。在执行代码之前,它会定义一些变量。例如,如果这个py文件就是主程序,它会设置__name__变量为"__main__"。如果这个py被引入到别的模块,__name__会被设置为该模块的名字。

举个栗子:
创建一个test.py文件:

if __name__ == '__main__':
    print '自己主动执行'
else:
    print '我被别的模块引入'

执行下$ python test.py会输出自己主动执行
直接在命令行中输入python随后输入import test,会输出:我被别的模块引入

8.app.run(debug=True)

程序实例用run方法启动Flask继承的开发Web服务器。

服务器启动后,会进入轮询,等待并处理请求。轮询会一直进行,直到程序停止,比如按Ctrl-C键。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值