背景
urls在django中為路由,view為視圖。通過在urls定義路由,到view里去訪問達到前后端交互的目的。本文來說明哈幾種在view中用于回傳至前端的格式及常用使用場景。
幾種格式的對比及使用場景
前提條件:
urls文件中需配置好路由
from django.conf.urls import url
from .import views?
urlpatterns=[
url(
'home',
views.home,
name='home'
)]
render
使用場景:編寫的html代碼,直接渲染在網(wǎng)頁上,不涉及復雜的數(shù)據(jù)處理時,可使用render
1.templates文件夾下創(chuàng)建home.html頁面
2.views.py的定義對應(yīng)的視圖函數(shù)
from?django.shortcuts?import?render
def home(request):
return render(request,'home.html')
訪問127.0.0.1:8000/home可見home.html頁面
若想簡單修改哈前端html的部分字段,可調(diào)整代碼如下:
from?django.shortcuts?import?render
def home(request):
data = [1,2,3] ? ? ? ? ? ? ? ? ? ? ? ? ? ? // data數(shù)據(jù)類型包括列表/字典
return render(request,'home.html',{'data':data})
html使用?{{ }}?來獲取數(shù)據(jù),如<div>{{data}}</div>
注:render是將整個html字符串返回并渲染成網(wǎng)頁
httpresponse
使用場景:涉及到復雜的數(shù)據(jù)處理,需要對前端發(fā)送的Ajax請求處理后的后端數(shù)據(jù)回傳至js的時候需使用httpresponse,但需要注意值要使用json.dumps()處理
views.py的定義對應(yīng)的視圖函數(shù)
from?django.http?import?JsonResponse,HttpResponse
import json
def home(request):
data = {'name':'zhangsan','age':18}
return HttpResponse(json.dumps(data))
注:此時返回并不是標準格式的json,而是Content-Type:text/html;要想獲得標準的json格式,需修改代碼為returnHttpResponse(json.dumps(data),content_type="application/json")
jsonresponse
使用場景:是HttpResponse的子類,內(nèi)部強制做了json轉(zhuǎn)換
views.py的定義對應(yīng)的視圖函數(shù)
from?django.http?import?JsonResponse,HttpResponse
def home(request):? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
data = {'name':'zhangsan','age':18}
return JsonResponse(data) ? ? ? ? ? ? ???// ?返回Json的數(shù)據(jù)格式