• Flask 基础总结回顾


    1.Flask Request

    # from flask import request
    		request.form # 获取FormData中的数据
    		request.args # 获取URL中的数据
    		request.data # 获取原始请求体数据 content-type 中没有Form字眼 b""
    		request.json # 获取 content-type:application/json 字典
    		request.files # 获取请求中的文件数据 FileStorage 对象 save(文件路径)
    		request.method # 获取请求方式 GET POST DELETE PUT
            request.path # 获取请求路径 路由地址
            request.host_url # 获取请求HOST地址
            request.cookies # 获取Cookie对象
            request.headers # 获取请求头中的数据
    

    2.Flask Response

    1."" HTTPResponse
    2.render_templates(模板名称) # 默认模板存放路径 templates
    3.redirect("/路由地址") # 响应头中 location:http://url/路由地址
    Flask 特殊:
    4.send_file("文件路径")
    # 打开并返回文件件内容 自动识别文件类型 响应头 Content-Type:文件类型
    5.jsonify(dict)
    # 返回标注的JSON格式字符串 响应头 Content-Type:application/json
    

    3.Flask 中的 Session

    from flask import session
    application.secret_key = "$%^&*()&^%$%^&*"
    app.config["SECRET_KEY"] = "$%^&*()&^%$%^&*"
    session["user"] = 123
    
    if session.get("user") ---  session["user"] KeyError
    
    交由客户端保管机制
    1.session["user"] = "123"
    2.序列化session 字符串
    3.通过 SECRET_KEY 加密字符串 加密算法
    4.cookie中加入 {SESSION_COOKIE_NAME}:SECRET_KEY 加密字符串
    5.返回客户端
    
    反:
    1.Cookie获取{SESSION_COOKIE_NAME}:SECRET_KEY
    2.通过 SECRET_KEY 解密 字符串 解密算法
    3.反序列化 字符串 字典 - session
    4.session.get("user")
    

    4.路由

    @app.route("/")
    def index():
    *endpoint app中是唯一的 路由和视图函数之间的桥梁
    *methods 允许请求的方式 ["GET","POST","DELETE","PUT"]
    **动态参数路由
    "/index/<page>"
    "/look/<xiaojiejie>/<picture>"
    def look(xiaojiejie,picture):
    
    defaults = {nid:1} # 视图的默认参数
    strict_slashes # 是否严格遵循路由匹配规则 "/结尾/" True False
    redirect_to # 永久重定向 301 308
    
    app.add_url_rule()
    

    5.初始化

    app = Flask(__name__)
    template_folder # 模板存放路径 os.path.join(root_path,template_folder)
    static_folder # 静态文件存放路径
    static_url_path # 静态文件访问路径 "/{static_folder}"
    -import_name # __name__ 锁定当前文件的目录 保证文件唯一
    -root_path # 当前application的所在目录 由import_name自动创建
    host_matching # 主机位 匹配 config.server_name
    static_host # 远程静态文件服务 "{static_host}/{static_folder}"
    subdomain_matching # 支持子域名的主机位匹配
    instance_path # 另一个Flask示例导入
    instance_relative_config # 另一个FlaskConfig导入
    

    6.配置

    app.config Flask Config对象
    app.debug = True
    app.config["DEBUG"] = True
    DEBUG 		开发环境 log级别低 		重启代码错误透传
    TESTING		测试环境 log级别较高	
    SECRET_KEY  开启Session序列化
    SESSION_COOKIE_NAME 在Cookie Session名称
    SESSION_COOKIE_HTTPONLY 是否只在HTTP请求下开启 session
    JSONIFY_MIMETYPE 更改 jsonify 时的 Content-Type
    	
    class DebugConfig(object):
    			DEBUG = True
    			SECRET_KEY = "%^&*()_"	
    app.config.from_object(DebugConfig)
    

    7.蓝图

    蓝图就是不能Run的Flask示例
    蓝图中没有Config对象
    蓝图的作用 隔离应用 隔离路由
    
    bp = Blueprint("蓝图名称全Flask示例唯一",__name__)
    @bp.route("application路由一致",url_prefix="/url前缀")
    def bp_index():
    app.register_blueprint(bp#蓝图对象)
    

    8.特殊装饰器

    @app.before_request # 在请求进入视图函数之前
    @app.after_request # 在响应客户端之前
        正常:be1 - be2 - vf - af2 - af1
    	异常:be1 - af2 - af1
    	
    @app.errorhandler(404) # 重定义错误信息
    def error404(ErrorMessage):
    	return 5返回
    	
    @app 可是 @bp , @bp 当前的装饰器只生效当前 bp
    

    9.CBV

    试图类
    from flask import views 导入CBV的视图基类
    class Login(views.MethodView): # 继承CBV视图基类的最高类
    def get(self):
        return "GET 200 OK!"
    def post(self):
        return "POST 200 OK!"
    

  • 相关阅读:
    20191017-1 每周例行报告
    20191010-2 每周例行报告
    20190919-1 每周例行报告
    彭思雨20190919-3效能分析
    zipfile
    subprocess
    configparser
    hashlib
    json & pickle
    headpq
  • 原文地址:https://www.cnblogs.com/an-wen/p/11601360.html
Copyright © 2020-2023  润新知