- 框架的安装
- 第一个Flask应用程序
- Flask内置服务器的启动,代码调试
- 基础知识:HTTP/URL等
- 请求到相应的流程
一,框架的安装
1. 什么是flask框架?
——Python实现的web开发微框架
——小而美,有丰富的周边扩展
2.如何安装flask?
——pip install flask
——python setup.py install
二,第一个Flask应用程序
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World!'
if __name__ == '__main__':
app.run()
1.参数__name__:
表示Flask应用的主模块或者包的名称。Flask使用该参数确定应用的位置然后找到其他应用的位置,如网页中的图片目录,模板目录。
2.装饰器app.route()
表示一个路由配置,即:用户在浏览器中输入URL,使用对应的函数处理其中的业务逻辑(可写多个)
三,MTV模型介绍
1. Model(模型):从数据库中取出的记录
2.View(视图):def函数
3.Template(模板):html
flask并不需要必须实现MTV,只要有核心的V便可运行。可以借助扩展来实现MT
四,Flask内置服务器的启动,调试
1.启动服务器:
——步骤一: 设置环境变量
Windows: set FLASK_APP = app.py
*linux: export FLASK_APP = app.py
——步骤二: flask run启动内置web服务器
指定IP以及端口:flask run --host = 0.0.0.0 --port = 8081或 flask run -h 0.0.0.0 -p 8081
2.开启调试模式
——步骤一: 设置环境变量
Windows: set FLASK_ENV = development
*linux: export FLASK_ENV = development
五,Flask的扩展
1. 什么是Flask扩展:
为flask应用增加功能的包
六,URL配置及路由
1.路由配置:
——方式一:使用装饰器
@app.route(url_name, methods)
——方式二:使用API配置
app.add_url_rule(url,url_name,view_name)
2.方式一,使用装饰器:
——语法规则
@app.route(url,methods)
——参数解释
url: 匹配的URL地址
methods:所支持的请求方式(['GET', 'POST'])
方式二,使用API配置:
——语法规则
app.add_url_rule(url,url_name,view_name)
——参数解释
url:匹配的URL地址
url_name:给URL的命名
view_name:视图函数
3.路由匹配规则
——方式一:匹配整个文字
@app.rourte('/index')
——方式二:传递参数
@app.route('/user/<username>')
——方式三:指定参数类型
@app.route('/user/<int:user_id>')
4.查看URL规则列表
app.url_map
5.URL逆向解析(根据名称解析成URL字符串)
<1>url_for(url_name, **kwargs)
<2>静态文件(js/css/图片)引用
url_for('static',filename='style.css')
六,Flask请求-相应上下文对象
1.上下文对象
——应用上下文
——请求上下文
——在分派请求之前激活应用上下文的请求上下文
——在请求处理完成之后将其删除
2.应用上下文对象:
current_app:当前应用的实例
g:处理请求时的临时存储对象,每次请求都会重新设这个变量
3.请求上下文对象:
request:请求对象,封装了客户端发出的http请求中的内容
session:用户会话(dict),各请求间的数据共享
七,请求报文
1.请求报文常用参数:
——methods:请求的类型(GET/POST/OPTIONS等)
——form:POST请求数据dict
——args:GET请求数据dict
——values:POST请求和GET请求数据结合dict
——files:上传的文件数据dict
——cookies:请求中的cookie dict
——headers:HTTP请求头
2.请求报文练习:
——获取GET参数
——解析请求头中的IP地址
@app.route('/request')
def test_request():
""" 请求报文练习 """
get_args = request.args
print(get_args)
name = request.args.get('name', '程文')
print(name)
# 获取IP地址
headers = request.headers
host = headers.get('host')
print(headers)
print(host)
ip = request.remote_addr
print('ip =', ip)
agent = request.headers.get('user_agent', None)
print('user_agent:', agent)
return 'get request'
3.请求钩子:
——before_first_request:服务器初始化后第一个请求到达前执行
——before_request:每一个请求到达前执行
——after_request:每次请求处理完后执行,如果请求过程中出现的异常则不执行
——teardown_request每次请求处理完之后执行,如果请求中出现了异常也继续执行
钩子的应用场景:
八,响应报文
1.响应:
——可以是字符串
return 'request success', 401
——可以是元组(tuple)(response,status,headers)或(response,headers)
resp = make_response('这是一个响应对象', 201, {
'ip_form': 'china'
})
resp.headers['user_id'] = 123
return resp
九,重定向等内部视图
——redirect()实现重定向
——abort()处理错误
@app.route('/')
def test_redirect():
# ip拦截
ip_list = ['127.0.0.0']
ip = request.remote_addr
if ip in ip_list:
abort(404)
return redirect('/hello')