一 flask基础
flask框架与其他框架区别:
1 from flask import Flask 2 app = Flask(__name__) 3 4 @app.route("/") 5 def index(): 6 return "Hello World" 7 8 app.run()
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中小儿子:
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)
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) #伪代码
from flask import Markup #类似于|safe tag='<input type="text" name="username">' tag=Markup(tag)
@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