1. 程式人生 > 實用技巧 >小談Django中的request物件

小談Django中的request物件

request物件

  • request.method 請求方法 GET , POST , ...
  • request.path_info 當前路徑 不包含IP和埠 也不包含引數 ;
  • request.get_full_path() 這是一個方法 , 其他都是屬性 ; 當前路徑 不包含IP和埠 但是包含引數 ;
  • request.GET url上攜帶的引數 鍵值對 ;
    • request.GET.get()
    • request.GET.getlist()
  • request.POST form表單提交POST請求的引數 鍵值對 ;
  • request.body 請求體 : get請求是空 , post請求才有 : form表單提交的鍵值對( b'name=xxx' ) ;
  • request.POST 不一定有資料 : 能拿到資料 , 是有要求的(
    編碼型別必須是urlencoded ) , 必須是urlencoded , request.POST才能拿到資料 ; 而request.body一定會有資料的 ;
  • request.COOKIES cookie的字典 ;
  • request.session session的資料 ;
  • request.FILES 上傳檔案 form表單指定的編碼型別必須是form-data( <form enctype="multipart/form-data" ) ;
  • request.META 請求頭的資訊 , 還有一些其他資訊 , 資訊很多 ; 並且請求頭的資訊的鍵的名稱不一樣 : 小寫變成大寫 ; 前面加上HTTP_ ; -變成了_ ;

---------------上面是屬性 , 下面是方法---------------------

  • request.get_host() 獲取主機地址
  • request.get_full_path() 這是一個方法 , 其他都是屬性 ; 當前路徑 不包含IP和埠 但是包含引數
  • request.get_signed_cookie() 獲取加密cookie
  • requet.is_secure() 如果請求是安全的 , 則返回True ; 即請求是通過 HTTPS 發起的 .
  • request.is_ajax() 判斷請求是否是ajax請求 : 是返回True ; 不是則返回False ;

request.GET

qd = request.GET

# qd的type就是 QueryDict; qd就是一個QueryDict的物件
# <QueryDict: {'page': ['1'], 'query': ['11'], 'xxx': ['ssss']}> <class 'django.http.request.QueryDict'>
print(qd,type(qd))

# 可以編輯; 如果不修改_mutable引數,修改會報錯
qd._mutable = True
qd['page'] = 1

# 顯示的結果是 page=1&query=11&xxx=111
print(qd.urlencode())
qd.copy() # 深拷貝,可以編輯

from django.http.request import QueryDict

request.POST

def reg(request):
    form_obj = RegForm()
    if request.method == 'POST':
        form_obj = RegForm(request.POST)
        print(request.POST)
        # <QueryDict: {'csrfmiddlewaretoken': ['fuFuf9TxgAvfrBZLAB8ucGqHPxZJcfZSBKoJE4oP84lFIRCsZRzOI7xjXhnnVH9R'], 'username': ['[email protected]'], 'password': ['test1234'], 're_password': ['test1234'], 'mobile': [''], 'name': ['test'], 'department': ['1']}>
        if form_obj.is_valid():
            form_obj.save()
            return redirect('login')
    return render(request, 'reg.html', {'form_obj': form_obj})