Python Flask框架扩展操作示例


Posted in Python onMay 03, 2019

本文实例讲述了Python Flask框架扩展操作。分享给大家供大家参考,具体如下:

请求上下文(request context)

Flask有两大核心:Werkzeug和Jinja2。Werkzeug实现路由、调试和Web服务器网关接口。Jinja2实现了模板。

request和response都属于请求上下文对象。
当调用app = Flask(name)的时候,创建了程序应用对象app;
request 在每次http请求发生时,WSGI server调用Flask.call();然后在Flask内部创建的request对象;
app的生命周期大于request,一个app存活期间,可能发生多次http请求,所以就会有多个request。
最终传入视图函数,通过return、redirect或render_template生成response对象,返回给客户端。

Flask装饰器路由的实现:

Flask框架是以Werkzeug为基础实现的。

Werkzeug是一个遵循WSGI协议的python函数库。其内部实现了很多Web框架底层的东西,比如request和response对象;与WSGI规范的兼容;支持Unicode;支持基本的会话管理和签名Cookie;集成URL请求路由等。

Werkzeug库的routing模块负责实现URL解析。不同的URL对应不同的视图函数,routing模块会对请求信息的URL进行解析,匹配到URL对应的视图函数,以此生成一个响应信息。

routing模块内部有Rule类(用来构造不同的URL模式的对象)、Map类(存储所有的URL规则)、MapAdapter类(负责具体URL匹配的工作);

Flask-Script扩展命令行

通过使用Flask-Script扩展,我们可以在Flask服务器启动的时候,通过命令行的方式传入参数。而不仅仅通过app.run()方法中传参,比如我们可以通过python hello.py runserver ?host ip地址,告诉服务器在哪个网络接口监听来自客户端的连接。默认情况下,服务器只监听来自服务器所在计算机发起的连接,即localhost连接。

我们可以通过python hello.py runserver ?help来查看参数。

from flask import Flask
from flask_script import Manager
app = Flask(__name__)
manager = Manager(app)
@app.route('/')
def index():
  return '床前明月光'
if __name__ == "__main__":
  manager.run()

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

Python 相关文章推荐
django框架如何集成celery进行开发
May 24 Python
Python对象类型及其运算方法(详解)
Jul 05 Python
在python3环境下的Django中使用MySQL数据库的实例
Aug 29 Python
解决Pycharm无法import自己安装的第三方module问题
May 18 Python
对python:print打印时加u的含义详解
Dec 15 Python
python执行CMD指令,并获取返回的方法
Dec 19 Python
pyqt5 获取显示器的分辨率的方法
Jun 18 Python
用python做游戏的细节详解
Jun 25 Python
Python基础之字符串操作常用函数集合
Feb 09 Python
将python字符串转化成长表达式的函数eval实例
May 11 Python
python 日志模块 日志等级设置失效的解决方案
May 26 Python
python报错TypeError: ‘NoneType‘ object is not subscriptable的解决方法
Nov 05 Python
Python安装Flask环境及简单应用示例
May 03 #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
You might like
PHP SPL标准库之数据结构栈(SplStack)介绍
2015/05/12 PHP
js prototype 格式化数字 By shawl.qiu
2007/04/02 Javascript
JQuery 遮罩层实现(mask)实现代码
2010/01/09 Javascript
用原生JavaScript实现jQuery的$.getJSON的解决方法
2013/05/03 Javascript
jquery必须知道的一些常用特效方法及使用示例(整理)
2013/06/24 Javascript
js网页实时倒计时精确到秒级
2014/02/10 Javascript
js与运算符和或运算符的妙用
2014/02/14 Javascript
JavaScript代码编写中各种各样的坑和填坑方法
2014/06/06 Javascript
jQuery中add()方法用法实例
2015/01/08 Javascript
jQuery使用drag效果实现自由拖拽div
2015/06/11 Javascript
Vue.js基础知识汇总
2016/04/27 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
BootStrap Table 获取同行不同列元素的方法
2016/12/19 Javascript
JavaScript实现定时页面跳转功能示例
2017/02/14 Javascript
使用bat打开多个cmd窗口执行gulp、node
2017/02/17 Javascript
Bootstrap table 定制提示语的加载过程
2017/02/20 Javascript
基于JavaScript实现图片剪切效果
2017/03/07 Javascript
浅析Angular19 自定义表单控件
2018/01/31 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
Vue+Bootstrap实现简易学生管理系统
2021/02/09 Vue.js
[46:43]DOTA2上海特级锦标赛主赛事日 - 1 胜者组第一轮#2LGD VS MVP.Phx第二局
2016/03/02 DOTA
[02:36]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma 选手采访
2021/03/11 DOTA
python实现连接mongodb的方法
2015/05/08 Python
使用python调用zxing库生成二维码图片详解
2017/01/10 Python
配置 Pycharm 默认 Test runner 的图文教程
2018/11/30 Python
解决django后台样式丢失,css资源加载失败的问题
2019/06/11 Python
python3中替换python2中cmp函数的实现
2019/08/20 Python
TensorFlow 输出checkpoint 中的变量名与变量值方式
2020/02/11 Python
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
2020/05/11 Python
医科大学生的自我评价
2013/12/04 职场文书
农场厂长岗位职责
2013/12/28 职场文书
2014政府领导班子对照检查材料思想汇报(3篇)
2014/09/26 职场文书
2014最新自愿离婚协议书范本
2014/11/19 职场文书
小学三年级作文之写景
2019/11/05 职场文书
python内置模块之上下文管理contextlib
2022/06/14 Python