Web框架——Flask系列之request请求参数详解(十一)
一、request參數
request 就是flask中代表當前請求的 request
對象,其中一個請求上下文變量(理解成全局變量,在視圖函數中直接使用可以取到當前本次請求)
from flask import request
就是Flask中表示當前請求的request對象,request對象中保存了一次HTTP請求的一切信息。
常用的屬性如下:
通過request.get(“name”)方法只能拿到多個同名參數的第一個值,request.args.get(“city”)是用來提取url中的參數(查詢字符串):
通過request.form.getlist(“name”),可以拿到所有同名參數的值:
二、字符編碼問題:
python2 字符串類型:
str “utf-8” “gbk”
unicode
python3中已經將兩者進行了統一!
示例:
a = “中國” # str
a = u"中國" # unicode
“中國” % “sa”
報錯:
ASCII cannot decode \xxx\xx
解決方法:在非英文字符前面加上u
u"中國" % “sa”
三、上傳文件
已上傳的文件存儲在內存或是文件系統中一個臨時的位置。你可以通過請求對象的 files 屬性訪問它們。每個上傳的文件都會存儲在這個字典里。它表現近乎為一個標準的 Python file 對象,但它還有一個 save() 方法,這個方法允許你把文件保存到服務器的文件系統上。這里是一個用它保存文件的例子:
from flask import request@app.route('/upload', methods=['GET', 'POST']) def upload_file():if request.method == 'POST':f = request.files['the_file']f.save('/var/www/uploads/uploaded_file.txt')...如果你想知道上傳前文件在客戶端的文件名是什么,你可以訪問 filename 屬性。但請記住, 永遠不要信任這個值,這個值是可以偽造的。如果你要把文件按客戶端提供的文件名存儲在服務器上,那么請把它傳遞給 Werkzeug 提供的 secure_filename() 函數:
from flask import request from werkzeug import secure_filename@app.route('/upload', methods=['GET', 'POST']) def upload_file():if request.method == 'POST':f = request.files['the_file']f.save('/var/www/uploads/' + secure_filename(f.filename))- myCode:
運行結果:
最原始的將內容寫入文件的方法:
with open()的使用:
# 上下文管理器 with open("./2.txt","wb") as f:str = "hello flask"# 報錯原因:# 在這里,python3和Python2在套接字返回值解碼上有區別。# 解決辦法非常的簡單,只需要用上python的bytes和str兩種類型轉換的函數encode()、decode()即可!## str通過encode()方法可以編碼為指定的bytes;# 反過來,如果我們從網絡或磁盤上讀取了字節流,那么讀到的數據就是bytes。要把bytes變為str,就需要用decode()方法;str = str.encode()f.write(str)
with的使用:
class Foo(object):def __enter__(self):# 進入with語句的時候被with調用print("enter called")def __exit__(self, exc_type, exc_val, exc_tb):# 離開with語句的時候被with調用print("exit called")print("exc_type:%s" % exc_type)print("exc_val:%s" % exc_val)print("exc_tb:%s" % exc_tb)with Foo() as foo:print("hello python")總結
以上是生活随笔為你收集整理的Web框架——Flask系列之request请求参数详解(十一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: word图片嵌入式为何只能看到一部分_W
- 下一篇: React脚手架学习笔记