django原生的HttpRequest物件

2021-08-27 08:00:46 字數 2337 閱讀 6870

回想一下,利用http協議向伺服器傳參有幾種途徑?

關鍵字引數

注意:兩種引數的方式不要混合使用,在乙個正規表示式中只能使用一種引數方式

分別使用以上兩種獲取url值的方式提取出18 188

位置引數

關鍵字引數

檢視中函式: 引數的位置可以變,跟關鍵字保持一致即可

def index(request, value2, value1):

# 構造上下文

context =

return render(request, 'book/index.html', context)

httprequest物件的屬性get、post都是querydict型別的物件

與python字典不同,querydict型別的物件用來處理同乙個鍵帶有多個值的情況

獲取請求路徑中的查詢字串引數(形如?k1=v1&k2=v2),可以通過request.get屬性獲取,返回querydict物件。

重要:查詢字串不區分請求方式,即假使客戶端進行post方式的請求,依然可以通過request.get獲取請求中的查詢字串資料。請求體資料格式不固定,可以是表單型別字串,可以是json字串,可以是xml字串,應區別對待。

可以傳送請求體資料的請求方式有postputpatchdelete

django預設開啟了csrf防護,會對上述請求方式進行csrf防護驗證,在測試時可以關閉csrf防護機制,方法為在settings.py檔案中注釋掉csrf中介軟體,如:

前端傳送的表單型別的請求體資料,可以通過request.post屬性獲取,返回querydict物件。

非表單型別的請求體資料,django無法自動解析,可以通過request.body屬性獲取最原始的請求體資料,自己按照請求體格式(json、xml等)進行解析。request.body返回bytes型別。例如要獲取請求體中的如下json資料

可以進行如下方法操作:

import json

def post_json(request):

json_str = request.body

json_str = json_str.decode() # python3.6 無需執行此步

可以通過request.meta屬性獲取請求頭headers中的資料,request.meta為字典型別

常見的請求頭如:

具體使用如:

files:乙個類似於字典的物件,包含所有的上傳檔案。

Django執行原生SQL

hey,各位小夥伴,這次怎麼來玩一下,如何使用django執行原生sql 我們都知道,python在web界的扛把子,django,可謂是集大成為統一,各種各樣的外掛程式,forms元件,model模型,admin後台 反正就是乙個字,nb 本次就來學一下,如何在django執行原生語句 在使用dj...

django執行原生sql

一 orm row 方法 只能實現查詢 d list models.article.objects.raw select nid,count nid as num,strftime y m create time as ctime from blog article where user id st...

python的django原生sql的實現

當model滿足不了需求的時候 比如 儲存過程 多表連線等 可以使用原生sql。django提供了兩種方法使用原生的sql 你可以使用manager.raw 執行原生sql,它會返回model例項,或者也可以直接執行原生sql,完全忽略model。警告 使用原生sql的時候,要盡可能的使用引數的形式...