Django DRF框架渲染模版

2022-04-11 20:03:27 字數 1938 閱讀 7345

drf官方文件渲染器

傳送門--寫在最後怕看不到

原始方法:

後端使用drf寫好介面後,前端頁面仍採用檢視函式方式跳轉至html頁面

優化:

1、不用寫檢視函式

2、修改路由為   url(r'^server_list$', server_info.serverinfolist.as_view()),

3、修改類檢視

實際drf基於類的檢視(cbv模式)是可以直接渲染模版的,只需要加上renderer_classes 和 template_name

from rest_framework import

generics, serializers, renderers

from ..models import

serverinfo

from rest_framework.response import

response

class

serverinfolist(generics.listapiview):

"""獲取所有伺服器資訊

"""queryset =serverinfo.objects.all()

serializer_class =serverinfoserializers

#渲染頁面

renderer_classes =(renderers.templatehtmlrenderer, renderers.jsonrenderer)

template_name

= 'server_list.html'#

重寫listmodelmixin中的list方法修改返回體格式為,{}]},以便前端使用(server分頁模式)

def list(self, request, *args, **kwargs):

queryset =self.filter_queryset(self.get_queryset())

page =self.paginate_queryset(queryset)

if page is

notnone:

serializer = self.get_serializer(page, many=true)

return

self.get_paginated_response(serializer.data)

serializer = self.get_serializer(queryset, many=true)

return response()

#return response(serializer.data)

新增上面兩個屬性後,還必須重寫對應的返回資料的方法,此處子類檢視listapiview對應的返回資料方法為list,

如不重寫直接返回 return response(serializer.data),預設資料格式為list型別[{},{}]則會報錯 context must be a dict rather than returnlist.

所以必須修改返回為dict型別,剛好結合前端框架需要的資料格式略作修改

重寫list根本原因:

如果返回需要渲染模版,則最終都會呼叫python27\lib\site-packages\django\template\context.py模組的make_context方法,此方法要求上下文必須為dict

Express 使用模版渲染

express可以使用jade,ejs作為模版引擎進行模版渲染,預設是jade,使用ejs作為模版引擎需要進行設定 設定模版檔案目錄 設定模版引擎const express require express 設定模版檔案目錄 設定模版引擎 在templates site index.ejs中渲染tit...

django drf框架,外來鍵關聯查詢

1 資料庫modelclass menu models.model menuid models.bigautofield primary key true menucode models.charfield max length 16,default verbose name 選單code menu...

golang http 程式設計 2(模版渲染)

傳入的資料型別中的元素必須大寫開頭,否則訪問不到該元素 main.go package main import fmt os text template type persion struct func main p persion if err t.execute os.stdout,p err ...