python - Flask - 扩展
2017-09-03 19:10
288 查看
请求上下文(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()
相关文章推荐
- Python Flask Web 第九课 —— flask 扩展小结
- Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
- Python的Flask框架中使用Flask-Migrate扩展迁移数据库的教程
- python Flask部分扩展介绍
- 通过uwsgi+nginx启动flask的python web程序
- python安装扩展”unable to find vcvarsall.bat“的解决办法
- Python Flask 博客
- 深度定制Python的Flask框架开发环境的一些技巧总结
- 用cython 给python 写c扩展
- Python Flask 在Sina App Engine (SAE)上安家
- 用python玩转数据|强大的数据结构和python扩展库
- flaskWeb开发(基于python的web开发实战)-第一部分-Flask简介
- 【脚本语言系列】关于PythonWeb服务器Flask,你需要知道的事
- 利用Python的Flask框架来构建一个简单的数字商品支付解决方案
- Python:Python中Flask出现No module named 'markupsafe._compat'问题的解决方案
- python常用web框架性能测试(django,flask,bottle,tornado)
- windows10上使用apache部署python flask项目
- python for windows 扩展包下载大全
- Windows下安装Python扩展模块提示“Unable to find vcvarsall.bat”的问题
- python Flask restful框架