Django2.X-返回響應內容

視圖函數是通過return方式返回,然後生成相應的網頁內容呈現在瀏覽器上,return是Python的內置語法,用於設置函數的返回值,若要設置不同的響應方式,則需要使用Django內置的響應類。如圖:

響應類型 說明
HttpResponse(‘Hello world’) 狀態碼200,請求已成功被服務器接受
HttpResponseRedirect(’/’) 狀態碼302,重定向首頁地址
HttpResponseBadRequest(‘400’) 狀態碼301,永久重定向首頁地址
HttpResponseNotFound(‘404’) 狀態碼404,網頁不存在或網頁的URL失效
HttpResponseForbidden(‘403’) 狀態碼403,沒有訪問權限
HttpResponseNotAllowed(‘405’) 狀態碼405,不允許使用該請求方式
HttpResponse(‘500’) 狀態碼500,服務器內容錯誤
JsonResponse({‘foo’:‘bar’}) 默認狀態碼200,響應內容爲JSON數據
StreamingHttpResponse() 默認狀態碼200,響應內容以流式輸出

不同的響應方式代表不同的HTTP狀態碼,其核心作用是Web Server服務器用來告訴瀏覽器當前網頁發生了什麼事,或者當前Web服務器的響應狀態。上述的響應類主要來自於模塊django.http,該模塊是實現響應功能的核心。以HttpResponse爲例,在MyDjango項目的index文件夾的urls.py和views.py中編寫功能代碼:

# index的urls.py
from django.urls import path
from . import views
urlpatterns = [
    # 定義首頁的路由
    path('', views.index, name='index'),
]

# index的views.py
from django.http import HttpResponse
from django.shortcuts import render

def index(request):
    html = '<h1>Hello World</h1>'
    return HttpResponse(html, status=200)

視圖函數index使用響應類HttpResponse實現響應過程。從HttpResponse的參數可知,第一個參數是響應內容,一般是網頁內容或JSON數據,網頁內容是以HTML語言爲主的,JSON數據用於生成API接口數據。第二個參數用於設置HTTP狀態碼,它支持HTTP所有的狀態碼。
從HttpResponse的使用過程可知,如果生成網頁內容,就需要將HTML語言以字符串的形式表示,如果網頁內容過大,就會增加視圖函數的代碼量,同時也沒有體現模板的作用。因此,Django在此基礎上進行了封裝處理,定義了函數render、render_to_response等。
render和render_to_response實現的功能是一致的。render_to_response自2.0版本以來已開始被棄用,但並不代表在2.0以上版本無法使用,只是大部分開發者都使用render。對render進行說明,語法如下:

render(request,template_name,context=None,content_type=None,status=None,using=None)

render的參數request和template_name是必須參數,其餘參數都是可選參數,各個參數如下:

  • request: 瀏覽器向服務器發送的請求對象,包含用戶信息、請求內容和請求方式等。
  • template_name: 設置模板文件名,用於生成網頁內容。
  • context: 對模板上下文(模板變量)賦值,以字典個格式表示,默認情況下是一個空字典。
  • content_type: 響應內容的數據格式,一般情況下使用默認值即可。
  • status: HTTP狀態碼,默認爲200。
  • using: 設置模板引擎,用於解析模板文件,生成網頁內容。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章