日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

flask的基础1

發布時間:2023/12/6 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 flask的基础1 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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 render_templaterender?

return :render_template("login.html")與Django中的 render 使用一致 返回模板由瀏覽器渲染

from flask import redirectredirect

return :redirect("/login") # 302跳轉,重定向URL

Flask獨有的

1.from flask import jsonify

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

Content-Type:application/json

app.config["JSON_AS_ASCII"] = False # 解決jsonify不能返回漢字問題 ==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信息

由于Flask中默認Session 存放位置 - 客戶端的Cookies中

所以Session需要加密 用到 secret_key

請求進入視圖函數 帶上cookie 將Session從cookie序列化出來 通過secret_key 反序列化成字典

?

轉載于:https://www.cnblogs.com/qq849784670/p/10235614.html

總結

以上是生活随笔為你收集整理的flask的基础1的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。