flask的基础1
1.python 現(xiàn)階段三大主流web框架Django Tornado Flask的對比
1.Django 主要特點是大而全,集成了很多組件,例如: Models Admin Form 等等, 不管你用得到用不到,反正它全都有,屬于全能型框架
2.Tornado 主要特點是原生異步非阻塞,在IO密集型應(yīng)用和多任務(wù)處理上占據(jù)絕對性的優(yōu)勢,屬于專注型框架
3.Flask 主要特點小而輕,原生組件幾乎為0, 三方提供的組件請參考Django 非常全面,屬于短小精悍型框架
Django 通常用于大型Web應(yīng)用由于內(nèi)置組件足夠強大所以使用Django開發(fā)可以一氣呵成
Tornado 通常用于API后端應(yīng)用,游戲服務(wù)后臺,其內(nèi)部實現(xiàn)的異步非阻塞真是穩(wěn)得一批
Flask 通常應(yīng)用于小型應(yīng)用和快速構(gòu)建應(yīng)用,其強大的三方庫,足以支撐一個大型的Web應(yīng)用
Django 優(yōu)點是大而全,缺點也就暴露出來了,這么多的資源一次性全部加載,肯定會造成一部分的資源浪費
Tornado 優(yōu)點是異步,缺點是干凈,連個Session都不支持
Flask 優(yōu)點是精悍簡單,缺點是穩(wěn)定性較差
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跳轉(zhuǎn),重定向URL
Flask獨有的
json.dumps(d, ensure_ascii=False)
2.from flask import send_file
return send_file(path) ?#send_file會打開文件并返回文件內(nèi)容(自動識別文件格式)
4.flask中的request
@app.route("/login", methods=["POST", "GET"]) # 默認的請求方式只有g(shù)et,在加上menthods參數(shù)后會根據(jù)添加的請求方式來處理,可以是元組或列表形式request.method # 請求方式 request.form # 存放FormData中的數(shù)據(jù) to_dict 序列化成字典 request.args # 獲取URL中的數(shù)據(jù) to_dict 序列化成字典 request.url # 訪問的完整路徑 request.path # 路由地址 request.full_path#帶參數(shù)的路由地址 request.host # 主機地址 request.values # 獲取 FormData and URL中的數(shù)據(jù) 不要用to_dict request.json # 如果提交時請求頭中的Content-Type:application/json 字典操作 request.data # 如果提交時請求頭中的Content-Type 無法被識別 將請求體中的原始數(shù)據(jù)存放 byte request.cookies # 獲取Cookie中的數(shù)據(jù) request.headers # 獲取請求頭 request.files # 序列化文件存儲 save() my_file = request.files.get("my_file") #獲取到上傳的文件 my_file.save(my_file.filename) #將文件保存在當前環(huán)境,最少指定一個文件名
5.jinja2
tag = "<input type='text' name='username'>" tag = Markup(tag) # 轉(zhuǎn)變成安全標簽字符串 #也可以在前端用 | safe @app.template_global() #全局的函數(shù) 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) }} #也可以在前端定義函數(shù)并調(diào)用 {% macro create_input(na,ty) %}{{ na }}: <input type="{{ ty }}" name="{{ na }}"> {% endmacro %}{{ create_input("username", "text") }}
6.flask中的session
app.secret_key = "加密字符串" #用于序列化和反序列化session信息
?
轉(zhuǎn)載于:https://www.cnblogs.com/qq849784670/p/10235614.html
總結(jié)
- 上一篇: 066:ORM查询条件详解-starts
- 下一篇: 关于经纬度的两个计算[Teaksxglu