• 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")

  • 相关阅读:
    XSS初探
    简单的HTTP服务实现
    WinForm“假死”问题汇总
    Access 数据库的数据类型
    C#应用调试C++ dll的方法
    Visual Studio远程调试
    【汇总】C#编程技巧
    SQL Server常见问题及解决方法
    java订单生成工具类
    JAVA-学习路线
  • 原文地址:https://www.cnblogs.com/duhong0520/p/13301205.html
Copyright © 2020-2023  润新知