Flask详解
创始人
2024-04-07 09:44:52
0

一, HTTP从请求到响应的过程

1- 域名解析。
一个域名(www.baidu.com)对应这一个IP地址。 使用DNS域名解析其对应的IP
2- TCP三次握手
(1) 客户端向指定服务器发送报文(报文分两段: 请求连接服务器数据+验证信息),客户端进入同步发送状态(SYN_Send)
(2) 服务器接收到报文后, 处理客户端验证信息后也向客户端发送报文(报文同样分两段, 请求连接客户端数据+处理后的验证信息),此时服务器进入同步接收状态(SYN_RECV)
(3) 客户端接收到服务器的报文后校验正确,发送确认包给服务器。 此时服务器和客户端均转为为确认连接状态(ESTABLISHED)。
…三次握手成功
3- TCP连接建立后, 客户端开始发起HTTP请求。
4- 服务器收到HTTP请求后,返回响应(json, html页面 或者 字符串)。
5- 浏览器解析html页面, 并获取html中的资源(图片或者一些js请求)。
6- 浏览器渲染html, 之后呈现给客户
7- TCP断开

在这里插入图片描述

NOTE: http的特点有简单快速, 其连接为短连接或者叫做无连接。是由客户端向服务器发送请求,服务器返回响应后就断开连接。

二,响应状态码

状态码详情查看以下链接
状态码详解

三, Flask框架介绍

1- Flask框架是一个基于python的微型框架。
2- Flask依赖两个外部库:

	(1)Jinja2 模板引擎{% %}. 模板:静态html+模板语言{%%}(2)Werzeug WSGI工具集

3- Flask是一个基于MVC设计模式的Web后端框架

		M 指 Model 数据模型V 指 View 界面C 指 Controller 控制器

四, 第一个Flask项目

1- 创建虚拟环境。 进入cmd输入

mkviertualenv flask_env

2- 在虚拟环境中安装flask

pip install flask

3- 创建helloFlask.py文件, 并写入以下代码:

from flask import Flask# 创建一个Flask对象
app = Flask(__name__)@app.route('/')
def index():"""视图函数:return:"""return "hello flask"if __name__ == '__main__':# 启动Flask应用"""host: 主机(ip), 如果'0'或者'0.0.0.0'。 则其他机器可以使用IP能访问。port: 端口,   不要与其他端口冲突。debug:  调试, 如果状态为True,页面异常后修复可以自动刷新"""app.run(host="0.0.0.0", port=6666, debug=True)

具体如下
在这里插入图片描述

4-run的说明
run中有3个参数

五, Flask拆分

0- 目的

当需要开发一个Flask项目时, 功能不会太少,所以一个正常的flask项目是需要足够的规范来避免项目维护困难

1- 拆分目录
在这里插入图片描述

2- 各个文件的功能

1- static:存放css活着js文件

h3 {color: red}

2- template: 存放html文件



Flask

博客首页


欢迎登录

3- init.py: 创建app对象并串联各个部分

from flask import Flask
from App.views import bluedef create_app():app = Flask(__name__)# 注册蓝图app.register_blueprint(blueprint=blue)return app

4- views.py: Flask的启动项

from flask import Blueprint
from flask import render_templateblue = Blueprint('user', __name__)@blue.route('/')
def hello_world():return 'Hello World!'@blue.route('/index/')
def index():return render_template('index.html')

5- manage.py: Flask的启动项

from App import create_appapp = create_app()if __name__ == '__main__':app.run(debug=True)

六, 路由的参数

1- 路由路径参数大致分为 str, int, float, path, uuid, any
这些类型限制了路由的传参格式,也是对路由的一种管控

from flask import Blueprint
from flask import render_templateblue = Blueprint('user', __name__)@blue.route('/')
def hello_world():return 'Hello World!'@blue.route('/index/')
def index():return render_template('index.html')# 传入 str, int, float, path, uuid
@blue.route('/book//')
def book(bookname):return f"获取到的书籍名称为: {bookname}"# 传入几个选项
@blue.route('/animal//')
def animal(animal):return f"抓到了: {animal}"

2-路有中的请求参数
请求参数有很多, 最常用的为以下四种 GET, POST, DELETE, PUT

# GET, POST, DELETE, PUT
@blue.route('/blogpost/', method=['GET', 'POST'])
def blog_post(blog_name):  # put application's code herereturn f"文章内容: {blog_name}"

七, Request请求

1- Flask中内置了request包, 使用以下代码进行导入

 from flask import request

2- Request的属性和方法

url: 完整的请求地址
base_url: 去掉GET参数的URL
host_url: 只有主机和端口号的URL
path: 路由中的路径
method: 请求方法
remote_addr: 请求的客户端地址
args: GET请求参数
form: POST请求参数
files: 文件上传
headers: 请求头
cookies: 请求中的cookie

八, Response响应

Flask中的4种响应方式

1- 直接返回字符串, 可以返回文本内容

return 'Hello World!'

2- render_template渲染模板

return render_template('index.html')

3- 通过make_response(data, code)返回

res = make_response('

红楼梦

') return res

4- 返回Response对象

html = render_template('index.html')
res = Response(html)
return res

重定向

url = 'https://www.baidu.com'
# return redirect(url)
return redirect('/price/')

定制异常页面

@blue.route('/abort/')
def make_abort():abort(502)return "error"@blue.errorhandler(502)
def error_handler(e):print("e", e)return "捕获到了异常"

九, Flask中使用Cookie

1- cookie是一种会话保持技术
2- 数据全部存储在客户端本地
3- 存储使用的键值对结构进行存储

1)设置cookie

response.set_cookie(key, value)

2)获取cookie

request.cookie.get(key)

2)删除cookie

response.delete_cookie()

具体使用见详情
https://editor.csdn.net/md/?articleId=127818418

相关内容

热门资讯

银河麒麟V10SP1高级服务器... 银河麒麟高级服务器操作系统简介: 银河麒麟高级服务器操作系统V10是针对企业级关键业务...
【NI Multisim 14...   目录 序言 一、工具栏 🍊1.“标准”工具栏 🍊 2.视图工具...
AWSECS:访问外部网络时出... 如果您在AWS ECS中部署了应用程序,并且该应用程序需要访问外部网络,但是无法正常访问,可能是因为...
不能访问光猫的的管理页面 光猫是现代家庭宽带网络的重要组成部分,它可以提供高速稳定的网络连接。但是,有时候我们会遇到不能访问光...
AWSElasticBeans... 在Dockerfile中手动配置nginx反向代理。例如,在Dockerfile中添加以下代码:FR...
Android|无法访问或保存... 这个问题可能是由于权限设置不正确导致的。您需要在应用程序清单文件中添加以下代码来请求适当的权限:此外...
月入8000+的steam搬砖... 大家好,我是阿阳 今天要给大家介绍的是 steam 游戏搬砖项目,目前...
​ToDesk 远程工具安装及... 目录 前言 ToDesk 优势 ToDesk 下载安装 ToDesk 功能展示 文件传输 设备链接 ...
北信源内网安全管理卸载 北信源内网安全管理是一款网络安全管理软件,主要用于保护内网安全。在日常使用过程中,卸载该软件是一种常...
AWS管理控制台菜单和权限 要在AWS管理控制台中创建菜单和权限,您可以使用AWS Identity and Access Ma...