day02 flask config,路由,Blueprint,Flask特殊装饰器

回顾:
1.启动Flask
from flask import Flask
app = Flask(__name__)
app.run("0.0.0.0",9527) # 监听 绑定 ?


2.Flask 的 Response
1.HTTPResponse 返回字符串 ""
2.render_template 渲染返回模板文件
3.redirect 重定向
# Flask 特殊封装
4.send_file 打开返回文件内容 Content-Type:文件类型 自动识别的文件类型
5.jsonify 返回标准的JSON格式字符串 Content-Type:application/json

3.Flask 的 Request
1.Request 导入 - 请求上下文
2.Request.method 请求方式 HTTP 8 种 POST DELETE PUT GET OPTIONS请求跨域
3.Request.path url_root 路由地址
4.Request.host 获取访问主机地址

# 方法:
request.form FormData中的数据 to_dict() 直接返回字典数据
request.args URL中的数据
request.data 请求体的原始信息 只有在 Content-Type 没有 Form b""
request.json 请求头中的 Content-Type:application/json 字典
request.headers 请求头中的信息
request.cookies 请求中Cookie的信息

# 坑:
request.values 不可触及的地带

4.Flask 中的 Session
from flask import session
使用session的前提是在 application 中加入 secret_key
app.secret_key = "$%^&*($#$%^&*^YH&U"

def get_session():
session["user"] = 123

交由客户端保管机制
1.开启Session - session["user"] = 123
2.session 序列化字符串
3.通过 secret_key 进行加密
4.通过 Cookie 返回客户端

接收Session
1.通过 Cookie 获取 session
2.通过 secret_key 解密
3.反序列化 字典
4.session

2019年9月25日:
增加装饰器 实现验证登录

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

*2.methods 允许请求的方式 ["GET","POST","DELETE","PUT"]

3.redirect_to 永久重定向 没有进入视图直接跳转 redirect_to="/new_look"
4.strict_slashes=False 是否严格要求 路由匹配规则 "/last/"
5.defaults={"nid":"22"} 默认参数 def 视图函数中(nid)一定要接受参数

**动态参数路由 /look/<int:page>_<int:row>_<int:row_2>
应用场景 利用Send_file限定返回文件

2.Flask 初始化实例化参数
*static_folder 静态文件存放路径
*static_url_path 静态文件访问路径 默认值为 "/{static_folder}"
*template_folder 模板存放路径
static_host 静态文件访问服务HOST -> 指向到另外一台服务器


3.Flask 对象配置 简单
app.default_config 默认配置

DEBUG 模式 开启编辑时代码重启 Log打印级别最低 错误信息透传
TESTING 模式 无限接近生产环境 代码编辑不会重启 Log级别较高 错误信息不再透传
SESSION_COOKIE_NAME 存放在浏览器cookie中session的名称
app.config["SESSION_COOKIE_NAME"] = "I am Not Session" 第一个字符,绝对不能是 空格

Flask Config 快速配置

class DebugConfig:
DEBUG = True
SECRET_KEY = "%^&*(%^&*"
PERMANENT_SESSION_LIFETIME = 3600
SESSION_COOKIE_NAME = "I am Not Session"
OLD = "OLD"
BOY = "BOY"
EDU = "EDU"
PYTHON = "PYTHON"
FLASK = "FLASK"

app.config.from_object(DebugConfig)

config = {k:v}
config[k1] = v1
{k:v,k1:v1}


4.Flask 中的 蓝图 Blueprint
Django app01
蓝图作用 功能隔离 路由隔离

from flask import Blueprint
# Blueprint 当做一个不能够run的Flask 实例
user = Blueprint(name="app02user",__name__,url_prefix="/shopping") # url_prefix
@user.route("/login")
def login():
return "I am app02 userBP login func"

在Flask实例中增加注册蓝图
app.regiest_blueprint(蓝图-user)

name="app02user" 蓝图名称 不能重复 保证在app中是唯一的
url_prefix="/shopping" URL前缀 用于隔离相同URL


5.Flask特殊装饰器
@app.before_request 请求进入视图函数之前
@app.after_request 请求结束,返回影响客户端之前

正常 be1 - be2 - be3 - vf - af3 - af2 - af1
异常 be1 - be2 - af3 - af2 - af1

@app.errorhandler(4xx or 5xx) 重定义错误信息
@app.errorhandler(404)
def error404(ErrorMessage):
print(ErrorMessage)
return redirect("https://www.autohome.com.cn/beijing/asdfe32r24rff23r23r")
# return send_file("image/1.jpg")

上一篇:基于flask仿照django进行简单的项目架构


下一篇:腾讯微服务框架TARS成功移植至Arm架构