Django獲取請求參數方式

前端傳參方式

  • 請求行: url傳參(/分隔,url路徑),查詢字符串傳參(?開頭key=value形式)

  • 請求頭: 如cookie

  • 請求體:表單格式,非表單格式如json

請求行url傳參:

  • 請求行url傳參
    請求方式爲:https://xxx/xxxx/xxxx/xxx 路徑的形式
    接收方式: 使用正則匹配url中的路徑接收參數,參數接收順序固定
    在這裏插入圖片描述

  • 請求行url傳參, 接收時關鍵詞名稱必須相同
    請求方式爲:https://xxx/xxxx/xxxx/xxx 路徑的形式
    接收方式 : 關鍵字形式接收參數在這裏插入圖片描述
    在這裏插入圖片描述

  • 查詢字符串傳參, 接收時關鍵詞名稱必須相同
    請求方式爲:https://xxx/xxxx?a=acd&b=123&c=qwe&a=234 (查詢字符串)
    接收方式:request.GET.get(key)可獲取對應的值,如果有一個鍵對用多個值的情況獲得的是最後一個 值,另外使用request.GET.getlist(key)獲得由所有對應值組成的一個列表

    注意: 其中request.GET中的GET指的是從請求行獲取參數,而不是get方式的請求
    在這裏插入圖片描述

這兩種方式可以混合使用,並且post和get方式訪問都可以

請求體傳參:

請求體數據格式不固定,可以是表單類型字符串,可以是JSON字符串,可以是XML字符串,應區別對待。

可以發送請求體數據的請求方式有POST、PUT、PATCH、DELETE。

Django默認開啓了CSRF防護,會對上述請求方式進行CSRF防護驗證,在測試時可以關閉CSRF防護機制,方法爲在settings.py文件中註釋掉CSRF中間件,

  • 表單數據 : 前端發送的表單類型的請求體數據,可以通過request.POST屬性獲取,返回QueryDict對象。
    請求方式爲:POST
    接收方式: request.POST.get(a)獲得表單中a的值
    在這裏插入圖片描述
  • 非表單數據json,文件,音頻
    非表單類型的請求體數據,Django無法自動解析,可以通過request.body屬性獲取最原始的請求體數據,自己按照請求體格式(JSON、XML等)進行解析。request.body返回bytes類型。
    在這裏插入圖片描述
    其中因爲pyhon3.5之前json.loads()方法只能接收str所有要使用decode()轉碼爲str才能使用,但是在python3.6以後json.loads()可以接收str和byte類型不使用decode()依然可以使用

請求頭傳參:

  • 可以通過request.META屬性獲取請求頭headers中的數據,request.META爲字典類型。
def get_headers(request):
    print(request.META['CONTENT_TYPE'])  # 獲取請求頭中的content_type
    return HttpResponse('OK')
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章