1. 程式人生 > >django學習記錄之HttpResponse,Cookie

django學習記錄之HttpResponse,Cookie

檢視在接收請求並處理後,必須返回HttpResponse物件或子物件HttpresponseRedirect。HttpRequest物件由Django建立,HttpResponse物件由開發人員建立。

1.HttpResponse響應物件。

content:返回的內容

status_code:返回HTTP響應狀態碼

content_type:指定返回資料的MIME型別

可以直接將HttpResponse物件當做字典來設定headers

def demo_response(request):
    """
    響應函式
    :param request: HttpRequest物件,由django建立
    :return:響應
    """
    # HtppResponse有content,status_code,content_type屬性
    response = HttpResponse()
    # 響應返回的內容
    # response = HttpResponse('subject python')
    # 或者
    response.content = 'aaa'
    response.status_code = 400
    # 響應頭可以將HttpResponse物件當做字典進行響應頭鍵值對的設定
    response['subject'] = 'python'
    return response

2.JsonResponse

若要返回json資料,可以使用JsonResponse來構造響應物件:

1.可以將資料轉為json字串

2.可以設定響應頭Content-Type 為 application/json

def demo_response(request):
    res = {'name':'wjm','age':18}
    return JsonResponse(res)

3.redirect重定向

def demo_redirect(request):
    return redirect('/users/index/')

cookie

cookie:1.基於鍵值對的形式儲存;2.瀏覽器的同源政策,不同域名的cookie是不能互相訪問的;3.當瀏覽器請求某網站時,會將和該網站相關的所有cookie資訊提交給該網站伺服器。

設定cookie:通過HttpResponse響應物件中的set_cookie來設定:

HttpResponse.set_cookie('name',value = 'wjm',max_age = 3600)

max_age預設單位為秒,若不設定則為None

def demo_view(requset):
    response = HttpResponse('ok')
    response.set_cookie('name','wjm') # 臨時cookie
    response.set_cookie('age',18,max_age=3600) # 有效期一小時
    return response

讀取cookie

可以通過HttpRequest物件來讀取本次請求攜帶的cookie值。

def demo_view(requset):
    # response = HttpResponse('ok')
    # response.set_cookie('name','wjm') # 臨時cookie
    # response.set_cookie('age',18,max_age=3600) # 有效期一小時
    cookie1 = requset.COOKIES.get('name')
    cookie2 = requset.COOKIES.get('age')
    print(cookie1,cookie2)
    return HttpResponse('OK')