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 相关文章推荐
用Python展示动态规则法用以解决重叠子问题的示例
Apr 02 Python
使用Django Form解决表单数据无法动态刷新的两种方法
Jul 14 Python
Django框架使用富文本编辑器Uedit的方法分析
Jul 31 Python
python隐藏终端执行cmd命令的方法
Jun 24 Python
解决Django migrate不能发现app.models的表问题
Aug 31 Python
Python csv文件的读写操作实例详解
Nov 19 Python
浅析python,PyCharm,Anaconda三者之间的关系
Nov 27 Python
python 二维矩阵转三维矩阵示例
Nov 30 Python
CentOS7下安装python3.6.8的教程详解
Jan 03 Python
python开发实例之python使用Websocket库开发简单聊天工具实例详解(python+Websocket+JS)
Mar 18 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
Apr 28 Python
浅谈anaconda python 版本对应关系
Oct 07 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
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
php 无限分类的树类代码
2009/12/03 PHP
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
Web程序工作原理详解
2014/12/25 PHP
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
PHP下 Mongodb 连接远程数据库的实例代码
2017/08/30 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
对textarea框的代码调试,而且功能上使用非常方便,酷
2006/06/30 Javascript
一个简单的javascript类定义例子
2009/09/12 Javascript
javascript cookies操作集合
2010/04/12 Javascript
Web 前端设计模式--Dom重构 提高显示性能
2010/10/22 Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
2013/04/24 Javascript
php和js对数据库图片进行等比缩放示例
2014/04/28 Javascript
js实现防止被iframe的方法
2015/07/03 Javascript
原生js实现查询天气小应用
2016/12/09 Javascript
JavaScript使用递归和循环实现阶乘的实例代码
2018/08/28 Javascript
ng-events类似ionic中Events的angular全局事件
2018/09/05 Javascript
vue响应式系统之observe、watcher、dep的源码解析
2019/04/09 Javascript
vue项目中将element-ui table表格写成组件的实现代码
2019/06/12 Javascript
Kettle中使用JavaScrip调用jar包对文件内容进行MD5加密的操作方法
2020/09/04 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
python用来获得图片exif信息的库实例分析
2015/03/16 Python
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
Python对文件操作知识汇总
2016/05/15 Python
Python3进制之间的转换代码实例
2019/08/24 Python
世界上第一个创建了罩杯系统的美国内衣品牌:Maidenform
2019/03/23 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
Chi Chi London官网:购买连衣裙和礼服
2020/10/25 全球购物
新春联欢会主持词
2014/03/24 职场文书
初三新学期计划书
2014/05/03 职场文书
天堂的孩子观后感
2015/06/11 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python
总结Python常用的魔法方法
2021/05/25 Python
教你使用Ubuntu搭建DNS服务器
2022/09/23 Servers