1.python 現階段三大主流web框架Django Tornado Flask的對比
1.Django 主要特點是大而全,集成了很多組件,例如: Models Admin Form 等等, 不管你用得到用不到,反正它全都有,屬于全能型框架
2.Tornado 主要特點是原生異步非阻塞,在IO密集型應用和多任務處理上占據絕對性的優勢,屬于專注型框架
3.Flask 主要特點小而輕,原生組件幾乎為0, 三方提供的組件請參考Django 非常全面,屬于短小精悍型框架
Django 通常用于大型Web應用由于內置組件足夠強大所以使用Django開發可以一氣呵成
Tornado 通常用于API后端應用,游戲服務后臺,其內部實現的異步非阻塞真是穩得一批
Flask 通常應用于小型應用和快速構建應用,其強大的三方庫,足以支撐一個大型的Web應用
Django 優點是大而全,缺點也就暴露出來了,這么多的資源一次性全部加載,肯定會造成一部分的資源浪費
Tornado 優點是異步,缺點是干凈,連個Session都不支持
Flask 優點是精悍簡單,缺點是穩定性較差
2.簡單的運行一個flask頁面
from flask import Flaskapp = Flask(name)@app.route("/")def index():return "Hello World"app.run(debug=True)
3.Response的三元素
HttpResponse:return “Hello World” 直接返回字符串
from flask import redirectredirect
return :redirect("/login") # 302跳轉,重定向URL
Flask獨有的
json.dumps(d, ensure_ascii=False)
2.from flask import send_file
return send_file(path) ?#send_file會打開文件并返回文件內容(自動識別文件格式)
4.flask中的request
@app.route("/login", methods=["POST", "GET"]) # 默認的請求方式只有get,在加上menthods參數后會根據添加的請求方式來處理,可以是元組或列表形式
request.method # 請求方式 request.form # 存放FormData中的數據 to_dict 序列化成字典 request.args # 獲取URL中的數據 to_dict 序列化成字典 request.url # 訪問的完整路徑 request.path # 路由地址 request.full_path#帶參數的路由地址 request.host # 主機地址 request.values # 獲取 FormData and URL中的數據 不要用to_dict request.json # 如果提交時請求頭中的Content-Type:application/json 字典操作 request.data # 如果提交時請求頭中的Content-Type 無法被識別 將請求體中的原始數據存放 byte request.cookies # 獲取Cookie中的數據 request.headers # 獲取請求頭 request.files # 序列化文件存儲 save()
my_file = request.files.get("my_file") #獲取到上傳的文件 my_file.save(my_file.filename) #將文件保存在當前環境,最少指定一個文件名
5.jinja2
tag = "<input type='text' name='username'>" tag = Markup(tag) # 轉變成安全標簽字符串 #也可以在前端用 | safe
@app.template_global() #全局的函數 def func(a, b):return a + b{{ func(5,6) }}@app.template_filter() # def fil(a, b, c):return a+b+c{{ 1 | fil(1,2) }}
#也可以在前端定義函數并調用 {% macro create_input(na,ty) %}{{ na }}: <input type="{{ ty }}" name="{{ na }}"> {% endmacro %}{{ create_input("username", "text") }}
6.flask中的session
app.secret_key = "加密字符串" #用于序列化和反序列化session信息
?