Flask——组件学习——后续补全

一、flask——hello world

# 安装flask
pip install flask

pip 安装 flask 后的依赖包如下

在这里插入图片描述

各个库说明如下:

Flask:Flask库
Jinja2:模板渲染库
MarkupSafe:返回安全标签 只要Flask返回模板或者标签时都会依赖MarkupSafe
Werkzeug:德文“工具” ,底层是WSGI,等价与uWSGI,Flask的启动都是依赖于Werkzeug

flask ——hello world

from flask import Flask # 导入Flask类创建Flask应用对象
app = Flask(__name__) # app = application

@app.route('/'): # 与路由绑定的视图函数
	def index():
		return "hello world"

# 启动flask
if __name__ == '__main__': # 当前文件处于脚本状态时运行如下代码
	app.run()
flask ——Response

返回字符串:return ‘hello world’
返回HTML:return render_template(‘index.html’)
重定向:return rediriect(’/home’)

# redirect:讲解
# 服务器在ResponseHeaders中返回一个Localtion:http://url
# 客户端接收到 Localtion再次向服务器发起请求
flask ——特殊返回值

send_file(“文件路径”) 返回文件

# 服务器返回一个文件
@app.route('/')
def index():
	return send_file('路径+文件')
	# 打开并返回一个文件内容 ———— 怎么做的?
		# 答 自动识别文件类型 在ResponseHeaders中加入Content-Type:文件类型
		# 浏览器不能识别的类型 ——下载处理 

jsonify(“字符串或数据类型”) 返回JSON字符串

在写API接口时特别爱使用

# 服务器返回一个json数据
@app.route('/')
def index():
	user = {"name":"lisi"}
	return jsonify(user) # Content-Type:application/json
	return user # 直接返回字典时,本质上在执行jsonify(user)
flask ——request

flask中函数从不接受request参数

# flask中函数从不接受request参数
# 在flask中直接导入使用request
18792970884
from Flask import request
@app.route('/',methods=['GET','POST'])
def index():

# request请求函数
	request.form.to_dict() # 获取FormData中的数据
	request.methods # 请求方法
	request.url # 请求地址
	request.values # 接受所有get,post请求中的数据,包含了url和FormData中的数据
	request.url_charset # url编码方式
	request.url_root # 请求地址 完整请求地址
	request.url_rule # 请求路由地址
	request.args.to_dict() # 获取url中所有的请求参数
	request.args.get() # 获取单个url总的匹配参数

# 上传保存文件的整个路径
	my_file = request.files.get() # 获取一个FileStorage Flask 文件特殊对象
	new_file = os.path.join('路径',my_file.filename)
	my_file.save(new_file)

# 特殊提交方式数据获取
	# Content-Type:application/json
	# request.json 获取 Content-Type:application/json 时提交的数据
	# request.data  获取原始请求体中的数据 b""
	return  '200 ok'
flask ——Session
面试:Session与Cookie的区别
答:Session是服务器端的键值对,交由客户端保管机制
	   Cookie客户端的键值对

前提条件是必须设置一个安全的秘钥

from flask import Flask
from Flask import session

app = Flask(__name__)
app.secret_key = "sdfsadsfasdg"  # 设置session时必须要设置这个

flask ——路由参数

app.route(’/’,endpoint=,methods=,redirect_to=,strict_slashes=,defaults=,)
def func():

return

endpoint 不能重复 对应视图函数 默认是视图函数名
视图函数与路由对应关系 url_for 反向创建url

methods 允许请求的方式['GET'...]

redirect_to 永久重定向 没有进入视图直接跳转

strict_slashes=False 是否严格要求匹配路由规则

defaults=xx 默认参数

动态参数路由	/look/<int:page> 利用Send_file限定返回文件
flask ——实例化配置
from flask import Flask

app = Flask(__name__,template_folder=,static_folder=,static_url_path=)

# template_folder:静态模板存放路径
# static_floder:静态文采存放路径
# static_url_path:静态文件访问路径
flask ——对象配置

app.config.from_object(self,obj)
app.config.from_pyfile(self,filename,silent)

flask ——蓝布
from flask import Blueprint
user = Blueprint('name',__name__,url_prefix=)

@user.route():
def func():
	return 

app.regiest_blueprint('蓝图名称')
flask ——特殊装饰器
@app.before_request	请求进入视图函数之前
@app.after_request	响应之前
@app.errofhandler	处理错误
flask ——CBV
class Login(views.MethodView):
	def get(self):
		return 
	def post(self):
		return 

app.add_url_rule(rule,view_func=Login.as_view(name='login'))
flask ——第三方组件之Flask-Session
pip install flask-session

from flask-session import Session
app = Flask(__name__)

Session(app)

flask ——第三方组件之redis
from redis import Redis

conn = Redis(host=,prot=,db=)
dt = {'key','value'}
conn.set('key',json.dumps(dt))

json.loads(conn.get('key'))
flask ——wsgi收取request

在这里插入图片描述

flask ——请求上下文

请求是如何到达flask应用的

flask ——应用上下文
发布了128 篇原创文章 · 获赞 0 · 访问量 2494

猜你喜欢

转载自blog.csdn.net/qq_41134008/article/details/105626847