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

原文地址:https://www.cnblogs.com/zhangqing979797/p/10235514.html