rest-framework之响应器(渲染器)

rest-framework之响应器(渲染器)

一 作用

根据 用户请求URL 或 用户可接受的类型,筛选出合适的 渲染组件。 用户请求URL: http://127.0.0.1:8000/test/?format=json http://127.0.0.1:8000/test.json

二 内置渲染器

显示json格式:JSONRenderer

访问URL:

默认显示格式:BrowsableAPIRenderer(可以修改它的html文件)

访问URL:

 

表格方式:AdminRenderer

访问URL:

 

form表单方式:HTMLFormRenderer

访问URL:

三 局部使用

复制代码

from rest_framework.renderers import  HTMLFormRenderer,BrowsableAPIRenderer
class BookDetailView(APIView):
  renderer_classes = [HTMLFormRenderer,BrowsableAPIRenderer ]
  def get(self,request,pk):
      book_obj=models.Book.objects.filter(pk=pk).first()
      bs=BookSerializers(book_obj,many=False)
      return Response(bs.data)
  def put(self,request,pk):
      book_obj = models.Book.objects.filter(pk=pk).first()

      bs=BookSerializers(data=request.data,instance=book_obj)
      if bs.is_valid():
          bs.save() # update
          return Response(bs.data)
      else:
          return Response(bs.errors)
  def delete(self,request,pk):
      models.Book.objects.filter(pk=pk).delete()

      return Response("")

复制代码

 

四 全局使用

settings里配置:

 

REST_FRAMEWORK = {
  'DEFAULT_RENDERER_CLASSES':['rest_framework.renderers.JSONRenderer']
}

五 自定义显示模版

复制代码

from rest_framework.renderers import  TemplateHTMLRenderer
class BookDetailView(APIView):
  renderer_classes = [TemplateHTMLRenderer]
  def get(self,request,pk):
      book_obj=models.Book.objects.filter(pk=pk).first()
      bs=BookSerializers(book_obj,many=False)
      return Response(bs.data,template_name='aa.html')

复制代码

 

复制代码

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
{{ title }}
{{ publishDate }}
</body>
</html>

复制代码

 

注意:如果同时多个存在时,自动根据URL后缀来选择渲染器。

 

TemplateHTMLRenderer
posted @   mjth  阅读(60)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示