Flask基本结构(一)
来源:互联网 发布:linux挂载盘到home好吗 编辑:程序博客网 时间:2024/05/22 12:57
1。初始化
创建一个程序实例来初始化,该程序实例是Flask类的对象。
from flask import Flask app = Flask(__name__)
在大多数程序中,__name__变量就是所需的值。Flask用这个参数界定程序的根目录,以便以后能够找到相对于程序根目录的资源文件位置。
2.路由和视图函数
Flask中定义路由的最简便方式,是使用程序实例提供的app.route修饰器,把修饰器的函数注册为路由。
@app.route('/')def index(): return '<h1>Hello World!<h1>'
使用修饰器把函数注册为事件的处理程序。
index()函数注册为程序根地址的处理程序,即为视图函数。。index()返回的 '<h1>Hello World!<h1>'称为响应,是客户端收到的内容。
某些URL中包含可变部分,Flask支持这种形式,只需在route修饰器中使用特殊句法即可。
@app.route('/user/<name>')def user(name): return '<h1>Hello, %s!<h1>' % name
尖括号中的name就是动态部分。
动态部分默认使用字符串,不过也可以类型定义。例如:/user/<int:id>
Flask支持在路由中使用int,float,和path类型。path类型也是字符串,但不把斜线视为分隔符,而不当作动态片段的一部分。
3.启动服务器
使用run方法启动Flask集成的开发Web服务器。
if __name__ ='__main__': app.run(debug = True)__name__== '__main__':是python的惯常用法,用以确保执行这个脚本时才启动开发Web服务器。把debug设为True启动调试模式。
Flask提供的Web服务器不适合在生产环境中使用。
4.第一个完整程序
from flask import Flaskapp = Flask(__name__)@app.route('/')def index(): return '<h1>Hello World!<h1>'if __name__ == '__main__': app.run(debug=True)
第一块是初始化,第二块是路由,第三块是启动服务器。
5.请求——响应循环
5.1 上下文
为了避免大量可有可无的参数把视图函数弄得一团糟,Flask使用上下文临时把某些对象变为全局可访问。
Flask中有两种上下文:程序上下文和请求上下文。
current_app 程序上下文 当前激活程序的程序实例
g 程序上下文处理请求时用作临时存储的对象。每次请求都会重设这个变量
request 请求上下文请求对象,封装了客户端发出的HTTP请求中的内容
session 请求上下文用户会话,用于存储请求之间需要“记住”的值的词典
5.2请求调度
程序收到客户端发来的请求时,要找到该请求的视图函数。为了完成这个任务,Flask会在程序的URL映射中查找请求的URL。URL映射是URL和视图函数之间的对应关系。
Flask使用app.route修饰器或者非修饰器形式的app.add_url_rule()生成映射。
示例代码:查看之前在hello.py生成的映射。
(venv) $ python>>> from hello import app>>> app.url mapMap([<Rule '/' (HEAD, OPTION, GET) -> index>,<Rule '/static/<filename>' (HEAD, OPTIONS, GET) -> static>,<Rule '/user/<name>' (HEAD, OPTINS, GET) -> user>])
HEAD, OPTION, GET是三种请求方法,由路由进行处理。
5.3请求钩子
钩子函数即通用函数。
四种钩子函数:
before_first_request: 注册一个函数,在处理第一个请求之前运行。
before_request: 注册一个函数,在每次请求之前运行。
after_request: 注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
teardown_request: 注册一个函数,即使有未处理的异常抛出,也在每次请求之后运行。
在请求钩子函数和视图函数之间共享数据一般使用上下文全局变量g。
5.4 响应
Flask调用视图函数后,会将其返回值作为响应的内容。
HTTP响应中一个很重要的部分是状态码,作为第二个返回值。第三个参数是一个由首部组成的字典。
Flask默认设为200,这个代码表明请求已经被成功处理。
状态码400,表示请求无效。
重定向响应没有页面文档,只告诉浏览器一个新地址用以加载页面。Flask提供了redirect()函数,用于生成这种响应。
重定向状态码一般为302。
还有一种特殊响应由abort函数生成,用于处理错误,返回状态码404。
注意,abort函数不会把控制权交还给调用他的函数,而是抛出异常把控制权交给Web服务器。
6.Flask扩展
Flask-Script是一个Flask扩展,为Flask程序添加了一个命令行解析器。
下述命令让Web服务器监听公共网络接口上的连接,允许通往中的其他计算机连接服务器。
(venv) $ python hello.py runserver --host 0.0.0.0*Running on http://a.b.c.d:5000/*Restarting with reloader
- Flask基本结构(一)
- Flask基本结构
- Flask学习笔记02--Flask基本结构
- Flask 多文件基本结构
- Flask:程序的基本结构
- Flask程序的基本结构
- Flask Web Development —— 基本应用程序结构(下)
- Flask Web Development —— 基本应用程序结构(上)
- Flask Web Development —— 基本应用程序结构(下)
- flask 学习之路(二) 程序的基本结构
- Flask(2)-程序的基本结构
- JVM(一)------基本结构
- PE文件结构(一) 基本结构
- 《Flask Web开发》读书笔记(2)第2章程序的基本结构(关键词:Web开发/Flask)
- Flask总结(一)
- Flask学习(一)
- Flask--Restful(一)
- Flask入门(一)
- 黑马程序员——Java基础---网络编程
- nodejs API之HTTP
- 第七周项目三负数把正数赶出队
- Linux常用软件的安装
- linux mount umount的使用
- Flask基本结构(一)
- 终端简单的命令 -- 增删改查
- HDU 2063 过山车(二部图)
- 湖南省第七届大学生计算机程序设计竞赛 多连块拼图
- 体绘制的原理和Raycasting的实现
- 黑马程序员——java基础---反射
- poj 1837分组背包
- ios开发系列之系统通讯录的相关操作
- HDOJ 2156 分数矩阵 (数学题)