• Flask初识


    flask的初识

    一.flask与django的比较

    Django 15
    优势 : 组件全 - admin - Model ORM - Forms
          教科书式
     
    劣势 : 加载所有组件 - 占用资源较高
      重型框架

    Flask 3
    优势 : 轻如鸿毛 扩展性极强 三方组件全

    劣势 : 什么组件都没有
      三方组件全 - 版本兼容问题 导致不稳

    二.flask

    1.Flask 安装 + 启动
    from flask import Flask
    app = Flask(__name__)
    app.run()
    #app.run('192.168.16.45',8000)通过此方法可以修改访问ip和端口

    高级启动:
    from flask import Flask
    app = Flask(__name__)

    @app.route("/")
    def home():
    return "Hello World!"

    app.run()
    2.Flask Response (响应)
    1.HttpResponse("HelloWorld")    "HelloWorld" 返回字符串

    2.from flask import render_template     需导入render_template 返回模板
    render("模板路径")     --->括号内跟的html页面名称.默认存放路径 templates

    3.from flask import redirect 重定向
    redirect("/")       --->括号内跟的路由

    Flask 中的返回特殊封装 2个
      1.jsonify 转换标准JSON格式
      响应头中加入 Content-type:application/json
      在Flask 1.1.1 版本中 加入了 直接返回字典 可以不再使用jsonify了

      例:@app.route('/')
       def home():
        return {'1':1}


      2.send_file 发送文件
      打开并返回文件内容,
      自动识别文件类型,
      响应头中加入Content-type:文件类型
      ps:当浏览器无法识别Content-type时,会下载文件

      例:@app.route('/file')
        def my_file():
          return send_file('111.mp4')
    3.Flask Request(请求)
    一个注意点:假登录,405 请求方式不被允许 - GET请求可以 但是POST请求 405 Method Not Allowed

    解决方法: @app.route('/login',methods=('POST','GET')),
              添加methods方法,可写成列表,也可写成元祖
                   
                   
                   
    request知识点:
       from flask import request 公共对象

       1.request.form 获取FormData中的数据 - Form表单
       2.request.args # 获取URL中的参数
       3.request.files # 获取FormData中的文件数据
       print(request.url) # 获取访问路径
       print(request.method) # 获取请求方式
       print(request.path) # 路由地址 /login
       print(request.values) # Form 和 Args 中的数据
       # 综合获取 X
       print(request.args.get("id")) # 获取URL中的参数
       print(request.args["id"]) # 获取URL中的参数
       print(request.args.to_dict()) # 获取URL中的参数 转换成 字典

       print(request.environ) # 获取请求原始信息
       print(request.base_url) # 获取URL头,不包含参数

       print(request.json) # 毁三观 1 请求头中 Content-type:application/json 数据序列化 request.json
       print(request.data) # 毁三观 2 请求头中 Content-type 不包含 Form or data

       print(request.headers) # 请求头中的数据
     

    4.Jinja2

    {{}} 引用 or 执行 {%%} 逻辑语法 if else for

    例:
    {% for key,foo in STUDENT_LIST.items() %}
              <tr>
                  <td>{{ foo.name }}</td>
                  <td>{{ foo.age }}</td>
                  {% if foo.gender != '男' and foo.gender != '女' %}
                      <td>女</td>
                  {% else %}
                      <td>{{ foo.gender }}</td>
                  {% endif %}

              </tr>
          {% endfor %}

     

    5.Flask中的Session

    from flask import session

    session 交由客户端保管机制,session保管在前端的cookie下
      # eyJ1c2VybmFtZSI6IjEyMyJ9.XSVpHA.W0NfiCmW-lsTV0mvQI7mx2mf1Wo
      # .eJyrViotTi3KS8xNVbJSMjQyVtKBCxhiiBhhiBhjiJhgiJhiiJhBRWoBMFYkPg.XSVsaA.9merwNdTg3ZkZrdTumYRG7x8x7Y



    验证session是否失效的过程:
    反序列化机制 -
    当客户端发起请求 - request 带上 Cookie - Cookie中有session的加密字符串 - Flask 收到Session加密字符串 - 通过secret_key解密session的加密字符串 - 获得 {username:123},然后检查后端数据库中是否存在session相关信息.


    序列化机制 - 开启session - session["username"] = uname
    先创建一个字典 {username:123} 接下来 通过secret_key + 时间戳 + 签名 加密 形成
    # eyJ1c2VybmFtZSI6IjEyMyJ9.XSVpHA.W0NfiCmW-lsTV0mvQI7mx2mf1Wo session的加密字符串


     

     

  • 相关阅读:
    Oracle游标举例
    java程序写的模拟用户点击的程序(抢小米程序)
    最好的ASP.NET MVC入门 step by step 来自微软
    项目经理
    程序员的职场晋升之路
    程序员怎么样才能进入微软?
    浅谈程序员创业
    软件销售心得-送给自己卖软件的程序员
    lamda表达式,匿名函数
    为什么Flash没能在移动设备上挺住?
  • 原文地址:https://www.cnblogs.com/jingzu/p/11354723.html
Copyright © 2020-2023  润新知