python+Django(5)—回傳至前端幾種方式

背景

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ù)格式

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容