1. 程式人生 > >Django系列教程(6)-- HttpRequest物件和HttpResponse物件

Django系列教程(6)-- HttpRequest物件和HttpResponse物件

HttpRequest物件

伺服器接收到http協議的請求後,會根據報文建立HttpRequest物件,然後將其傳遞給檢視函式

屬性

  • 下列屬性中,除特殊說明都是隻讀的
  • path:一個字串,表示請求頁面的完整路徑,不包含域名
  • method:一個字串,表示請求使用的http方法,常用值包括:‘GET’,‘POST’
  • encoding:一個字串,表示提交資料的編碼方式,這個屬性是可寫的
  • GET:一個類似於字典的物件,包含get請求方式的所有引數
  • POST:一個類似於字典的物件,包含post請求方式的所有引數

方法

  • is_ajax():如果請求是通過XMLHttpRequest發起的,則返回True

QueryDict物件

  • 定義在django.http.QueryDict
  • request物件的屬性GET,POST都是QueryDict型別的物件
  • 與python字典不同,QueryDict型別的物件用來處理同一個鍵帶有多個值的情況
  • 方法get():根據鍵獲取值

    • 只能獲取鍵的一個值
    • 如果一個鍵同時擁有多個值,獲取最後一個值

    dict.get(‘鍵’,default)
    或簡寫為
    dict{‘鍵’}

  • 方法getlist():根據鍵獲取值

    • 將鍵的值以列表返回,可以獲取一個鍵的多個值

    dict.getlist(‘鍵’,default)

  • GET屬性

    • QueryDict型別的物件
    • 包含get請求方式的所有引數
    • 與url請求地址中的引數對應,位於?後面
    • 引數的格式是鍵值對,多個引數用&連線

    POST屬性

    • QueryDict型別的物件
    • 包含post請求方式的所有引數
    • 與form表單中的控制元件對應

    HttpResponse物件

    • 在django.http模組中定義了HttpResponse物件的API
    • HttpRequest物件由Django自動建立,HttpResponse由程式設計師建立
    • 不呼叫模板,直接返回資料
    # coding=utf-8
    from django.http import HttpResponse
    
    def
    index(request):
    return HttpResponse('你好')
    • 呼叫模板

    目前大多推薦使用render的方式

    render

    • render是HttpResponse的簡寫函式
    • 語法為:render(request,template_name[,context])
    • 結合一個給定的模板和一個給定的上下文字典,並返回一個HttpResponse物件
    • request:該request用於生成reponse
    • template_name:要使用完整的模板名稱
    • context:新增到模板上下文的一個字典,檢視將在渲染模板之前呼叫它
    from django.shortcuts import render
    
    def index(request):
    return render(request,'booktest/html',{'h1':'hello'})

    重定向

    • redirect(to)
    • 為傳遞進來的引數返回HttpResponseRedirect
    • to推薦使用反向解析
    from django.shortcuts import redirect
    from django,core.urlresolvers import reverse
    
    def index(request):
        return redirect(reverse('booktest:index2'))