zoukankan      html  css  js  c++  java
  • flask中的Response、Request、Session、装饰器、实例化参数、蓝图、

    1.启动Flask
    from flask import Flask
    app = Flask(__name__)
    if __name__ == '__main__':
    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
    增加装饰器 实现验证登录
    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)一定要接受参数
    # @app.route("/look", endpoint="look", methods=["GET", "POST", "post", "get"], strict_slashes=False, defaults={"nid":1})
    # @app.route("/look", defaults={"nid": 1})
    # @app.route("/look/<int:page>")
    @app.route("/look/<string:page>")
    def look(page):
    return f"当前是第{page}页"
    **动态参数路由 /look/<int:page>_<int:row>_<int:row_2>
    应用场景 利用Send_file限定返回文件
    from flask import send_file
    @app.route("/look/<folder>/<filename>")
    def look(folder, filename):
    file_path = os.path.join(folder, filename)
    return send_file(file_path)

    2.Flask 初始化实例化参数
    *static_folder 静态文件存放路径
    *static_url_path 静态文件访问路径 默认值为 "/{static_folder}"
    *template_folder 模板存放路径
    static_host 静态文件访问服务HOST -> 指向到另外一台服务器
    版一:
    import os
    from flask import Flask
    from flask import render_template
    from flask import send_file
    # template_folder指定模板路径,static_folder静态默认访问路径,static_url_path默认访问的url路径
    app = Flask(__name__, template_folder="templatesdfdsfdf", static_folder="image", static_url_path="/static")
    # 重定义默认访问路径
    my_static_folder = "image"
    my_static_url_path = None
    if not my_static_url_path:
    # 不为空
    url_path = f"/{my_static_folder}"
    @app.route("/")
    def index():
    return render_template("index.html")
    @app.route(f"{url_path}/<filename>")
    def look(filename):
    file_path = os.path.join(my_static_folder, filename)
    return send_file(file_path)
    if __name__ == '__main__':
    app.run()

    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"
    class TestConfig:
    TESTING = True
    SECRET_KEY = "我是一个加密的字符串牛逼吧"
    PERMANENT_SESSION_LIFETIME = 30
    SESSION_COOKIE_NAME = "TestConfig"
    OLD = "OLDS"
    BOY = "BOYS"
    EDU = "EDUS"
    PYTHON = "PYTHONS"
    FLASK = "FLASKS"
    访问:
    import os
    from flask import Flask
    from flask import render_template
    from flask import send_file
    from flask import session
    app = Flask(__name__)
    # 增加配置文件:
    from setting import DebugConfig, TestConfig
    # app.config.from_object(DebugConfig)
    app.config.from_object(TestConfig)
    # 重定义默认访问路径:
    my_static_folder = "image"
    my_static_url_path = "/look"
    if not my_static_url_path:
    # 不为空:
    my_static_url_path = f"/{my_static_folder}"
    @app.route("/")
    def index():
    session["user"] = "123123"
    return render_template("index.html")
    @app.route(f"{my_static_url_path}/<filename>")
    def look(filename):
    file_path = os.path.join(my_static_folder, filename)
    return send_file(file_path)
    if __name__ == '__main__':
    app.run()

    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
  • 相关阅读:
    java项目生成jar,并在cmd中执行jar
    Java中使用Log的方法
    JavaScript高级程序设计(十):数组类型
    oracle 查询XML操作、操作系统文件
    Oracle job procedure 存储过程定时任务
    ASP调用存储过程访问SQL Server
    自己如何获取ADO连接字符串
    SQL Server 开发指南
    SQL Server 数据库设计
    SQL Server 触发器
  • 原文地址:https://www.cnblogs.com/zhang-da/p/13190109.html
Copyright © 2011-2022 走看看