zoukankan      html  css  js  c++  java
  • flask 基础

    一 flask基础

    flask框架与其他框架区别:

    1.Django

    Model ORM Session

    ModelForm

    amdin

    大而全 浪费资源

    2.Flask  

    Session

    小而精,三方组件全 稳定性相对较差

    3.Tornado

    异步IO 非阻塞 原生websocket

    干净

    几乎所有的flask都是基于其他第三方包的,所以稳定性较差

    使用

    1 from flask import Flask
    2 app = Flask(__name__)
    3 
    4 @app.route("/")
    5 def index():
    6return "Hello World"
    7 
    8 app.run()

    Response三剑客:

    1.HttpResponse: return "Hello World" 返回字符串至客户端

    from flask import render_template

    2.render : return render_template("login.html")

    与Django中的 render 使用一致 返回模板由浏览器渲染

    from flask import redirect

    3.redirect: return redirect("/login") # 302

    跳转,重定向URL

    其实不难发现,都是flask引用的依赖包

     

    Flask中小儿子:

    1.from flask import jsonify   #进行传送json数据时使用

    retrun jsonify({name:111}) # 返回json标准的字符串

    Content-Type:application/json

    json与jsonify的区别:

    json的请求头ContentType是charset utf8的

    而jsonify请求头是json数据的,也就是说,在进行前后端交互的时候浏览器会识别jsonify

    使用jsonify也是需要引用的哦

    2.from flask import send_file  #打开文件并返回文件内容(自动识别文件格式)

    return send_file(path)

     

    falsk 中的 request

     1 from flask import request
     2 request.method # 请求方式
     3 request.form # 存放FormData中的数据 to_dict 序列化成字典
     4 request.args # 获取URL中的数据 to_dict 序列化成字典
     5 request.url # 访问的完整路径
     6 request.path # 路由地址
     7 request.host # 主机地址
     8 request.values # 获取 FormData and URL中的数据 不要用to_dict
     9 request.json  # 如果提交时请求头中的Content-Type:application/json 字典操作
    10 request.data  # 如果提交时请求头中的Content-Type 无法被识别 将请求体中的原始数据存放 byte
    11 request.cookies # 获取Cookie中的数据
    12 request.headers # 获取请求头
    13 request.files # 序列化文件存储 save()

    Jinja2

    jinja2是flask类似与django的模板字符串

    使用:
    {{}} 引用变量 执行函数,在进行向前端传递数据

    STUDENT_DICT = {
        1: {'name': 'Old', 'age': 38, 'gender': ''},
        2: {'name': 'Boy', 'age': 73, 'gender': ''},
        3: {'name': 'EDU', 'age': 84, 'gender': ''},
    }
    
    @app.route('/index')
    @waidu
    def index2():
        return render_template('index2.html',sud_lst=STUDENT_DICT)
    #伪代码

    {%%} 逻辑代码  #同djsngo

    但是也可以传递标签

    from flask import Markup  #类似于|safe
    tag='<input type="text" name="username">'
    tag=Markup(tag)

    |safe Markup 安全标签字符串

    @app.template_global()

    @app.template_filter()

    @app.template_global() #全局
    def func(a,b):
        return a+b
    
    @app.template_filter()  #可传3个值
    def fil(a ,b ,c):
        print(a)
        return a+b+c

    前端

    {{ func(5,2) }}
    {{ 10 | fil(2,3) }}

    弘 调用时使用

    {% macro create_input(na,ty) %}
        {{ na }}:<input type="{{ ty }}" name="{{ na }}">
    
    {% endmacro %}
    {{ create_input('username','text') }}

    Flask 中的 Session

    注意,必需添加secret_key

    app.secret_key = "zhang"
      
    否则不会生成session

    app.secret_key = "加密字符串" # 用于序列化和反序列化 session信息

    由于Flask中默认Session 存放位置 - 客户端的Cookies中 所以Session需要加密 用到 secret_key 请求进入视图函数 带上cookie 将Session从cookie序列化出来 通过secret_key 反序列化成字典 Flask-Session

  • 相关阅读:
    牛客算法周周练2
    牛客算法周周练2
    2020年7月7日Java学习日记
    2020年7月6日Java学习日记
    练习29--if语句
    练习28--布尔练习
    练习27--记忆逻辑
    第18~19讲课后作业
    第20讲:内嵌函数和闭包
    练习25--更多更多练习
  • 原文地址:https://www.cnblogs.com/zhangqing979797/p/10235514.html
Copyright © 2011-2022 走看看