Python安装Flask环境及简单应用示例


Posted in Python onMay 03, 2019

本文实例讲述了Python安装Flask环境及简单应用。分享给大家供大家参考,具体如下:

安装环境

使用虚拟环境安装Flask,可以避免包的混乱和版本的冲突,虚拟环境是Python解释器的副本,在虚拟环境中你可以安装扩展包,为每个程序单独创建的虚拟环境,可以保证程序只能访问虚拟环境中的包。而不会影响系统中安装的全局Python解释器,从而保证全局解释器的整洁。

虚拟环境使用virtualenv创建,可以查看系统是否安装了virtualenv:

$ virtualenv --version

安装虚拟环境(须在联网状态下)

$ sudo pip install virtualenv
$ sudo pip install virtualenvwrapper

创建虚拟环境(ubuntu里须在联网状态下)

$ mkvirtualenv Flask_py

进入虚拟环境

$ workon Flask_py

退出虚拟环境

如果所在环境为真实环境,会提示deactivate:未找到命令

$ deactivate Flask_py

安装Flask

指定Flask版本安装

$ pip install flask==0.10.1

Mac系统:

$ easy_install flask==0.10.1

在ipython中测试安装是否成功

$ from flask import Flask

Flask程序运行过程:

所有Flask程序必须有一个程序实例。

Flask调用视图函数后,会将视图函数的返回值作为响应的内容,返回给客户端。一般情况下,响应内容主要是字符串和状态码。

当客户端想要获取资源时,一般会通过浏览器发起HTTP请求。此时,Web服务器使用WSGI(Web Server Gateway Interface)协议,把来自客户端的所有请求都交给Flask程序实例,程序实例使用Werkzeug来做路由分发(URL请求和视图函数之间的对应关系)。根据每个URL请求,找到具体的视图函数。 在Flask程序中,路由的实现一般是通过程序实例的装饰器实现。通过调用视图函数,获取到数据后,把数据传入HTML模板文件中,模板引擎负责渲染HTTP响应数据,然后由Flask返回响应数据给浏览器,最后浏览器处理返回的结果显示给客户端。

示例:

# 导入Flask类
from flask import Flask
#Flask函数接收一个参数__name__,它会指向程序所在的模块
app = Flask(__name__)
# 装饰器的作用是将路由映射到视图函数index
@app.route('/')
def index():
  return 'Hello World'
# Flask应用程序实例的run方法启动WEB服务器
if __name__ == '__main__':
  app.run()

给路由传参示例:

有时我们需要将同一类URL映射到同一个视图函数处理,比如:使用同一个视图函数 来显示不同用户的个人信息。

# 路由传递的参数默认当做string处理,这里指定int,尖括号中的内容是动态的
@app.route('/user/<int:id>')
def hello_itcast(id):
  return 'hello itcast %d' %id

返回状态码示例:

return后面可以自主定义状态码(即使这个状态码不存在)。当客户端的请求已经处理完成,由视图函数决定返回给客户端一个状态码,告知客户端这次请求的处理结果。

@app.route('/')
def hello_itcast():
  return 'hello itcast',999

abort函数:

如果在视图函数执行过程中,出现了异常错误,我们可以使用abort函数立即终止视图函数的执行。通过abort函数,可以向前端返回一个http标准中存在的错误状态码,表示出现的错误信息。

使用abort抛出一个http标准中不存在的自定义的状态码,没有实际意义。如果abort函数被触发,其后面的语句将不会执行。其类似于python中raise。

from flask import Flask,abort
@app.route('/')
def hello_itcast():
  abort(404)
  return 'hello itcast',999

重定向redirect示例

from flask import redirect
@app.route('/')
def hello_itcast():
  return redirect('http://www.baidu.com')

正则URL示例:

from flask import Flask
from werkzeug.routing import BaseConverter
class Regex_url(BaseConverter):
  def __init__(self,url_map,*args):
    super(Regex_url,self).__init__(url_map)
    self.regex = args[0]
app = Flask(__name__)
app.url_map.converters['re'] = Regex_url
@app.route('/user/<re("[a-z]{3}"):id>')
def hello_itcast(id):
  return 'hello %s' %id

设置cookie和获取cookie

from flask import Flask,make_response
@app.route('/cookie')
def set_cookie():
  resp = make_response('this is to set cookie')
  resp.set_cookie('username', 'itcast')
  return resp
from flask import Flask,request
#获取cookie
@app.route('/request')
def resp_cookie():
  resp = request.cookies.get('username')
  return resp

希望本文所述对大家基于flask框架的Python程序设计有所帮助。

Python 相关文章推荐
35个Python编程小技巧
Apr 01 Python
Python深入学习之闭包
Aug 31 Python
django 将model转换为字典的方法示例
Oct 16 Python
Python使用到第三方库PyMuPDF图片与pdf相互转换
May 03 Python
python pytest进阶之xunit fixture详解
Jun 27 Python
Django 中自定义 Admin 样式与功能的实现方法
Jul 04 Python
Python unittest 自动识别并执行测试用例方式
Mar 09 Python
opencv 图像礼帽和图像黑帽的实现
Jul 07 Python
Python如何实现远程方法调用
Aug 07 Python
解决Python 函数声明先后顺序出现的问题
Sep 02 Python
python 动态渲染 mysql 配置文件的示例
Nov 20 Python
matplotlib绘制多子图共享鼠标光标的方法示例
Jan 08 Python
Python实现字典按key或者value进行排序操作示例【sorted】
May 03 #Python
Python3模拟curl发送post请求操作示例
May 03 #Python
零基础使用Python读写处理Excel表格的方法
May 02 #Python
Python TestCase中的断言方法介绍
May 02 #Python
Python3中的bytes和str类型详解
May 02 #Python
利用pyinstaller打包exe文件的基本教程
May 02 #Python
Python中psutil的介绍与用法
May 02 #Python
You might like
单位速度在实战中的运用
2020/03/04 星际争霸
PHP IN_ARRAY 函数使用注意事项
2010/07/24 PHP
php验证手机号码(支持归属地查询及编码为UTF8)
2013/02/01 PHP
Nginx下ThinkPHP5的配置方法详解
2017/08/01 PHP
Laravel中服务提供者和门面模式的入门介绍
2017/11/06 PHP
thinkphp5 加载静态资源路径与常量的方法
2017/12/24 PHP
php使用imagecopymerge()函数创建半透明水印
2018/01/25 PHP
javascript学习笔记(三)显示当时时间的代码
2011/04/08 Javascript
js利用事件的阻止冒泡实现点击空白模态框的隐藏
2014/01/24 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
javascript实例--教你实现扑克牌洗牌功能
2014/05/15 Javascript
JQuery异步加载PartialView的方法
2016/06/07 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
vue2.0父子组件及非父子组件之间的通信方法
2017/01/21 Javascript
微信小程序实现实时圆形进度条的方法示例
2017/02/24 Javascript
微信小程序学习之数据处理详解
2017/07/05 Javascript
vue使用axios实现文件上传进度的实时更新详解
2017/12/20 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
详解python中@的用法
2019/03/27 Python
Python单元测试模块doctest的具体使用
2020/02/10 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
Python+pyftpdlib实现局域网文件互传
2020/08/24 Python
HTML5 播放 RTSP 视频的实例代码
2019/07/29 HTML / CSS
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
简述数据库的设计过程
2015/06/22 面试题
shell程序中如何注释
2012/02/17 面试题
Java的类可以定义为Protected或者Private得吗
2015/09/25 面试题
关于安全的演讲稿
2014/05/09 职场文书
房屋租赁合同解除协议书
2014/10/11 职场文书
离婚协议书范文2014
2014/10/16 职场文书
2015年乡镇安全生产工作总结
2015/05/19 职场文书
Django与数据库交互的实现
2021/06/03 Python