第八章 restframework——響應器

來源:互聯網
上載者:User

標籤:表格   mat   char   man   elf   span   efault   model   htm   

第八章 restframework——響應器

 

一、響應器介紹

二、局部響應器

三、內建響應器

四、全域響應器

五、自訂顯示模板

 

一、響應器介紹

什麼是響應器(what):

根據 使用者請求URL 或 使用者可接受的類型,篩選出合適的 渲染組件。
使用者請求URL:
    http://127.0.0.1:8000/test/?format=json
    http://127.0.0.1:8000/test.json

 

二、內建渲染器

顯示json格式:JSONRenderer

訪問URL:

  • http://127.0.0.1:8000/test/?format=json
  • http://127.0.0.1:8000/test.json
  • http://127.0.0.1:8000/test/ 

預設顯示格式:BrowsableAPIRenderer(可以修改它的html檔案)

訪問URL:

  • http://127.0.0.1:8000/test/?format=api
  • http://127.0.0.1:8000/test.api
  • http://127.0.0.1:8000/test/

 

表格方式:AdminRenderer

訪問URL:

  • http://127.0.0.1:8000/test/?format=admin
  • http://127.0.0.1:8000/test.admin
  • http://127.0.0.1:8000/test/

 

form表單方式:HTMLFormRenderer

訪問URL:

  • http://127.0.0.1:8000/test/?format=form
  • http://127.0.0.1:8000/test.form
  • http://127.0.0.1:8000/test/

 

三、局部響應器

from rest_framework.renderers import  HTMLFormRenderer,BrowsableAPIRendererclass 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.py

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

 

五、自訂顯示模板

from rest_framework.renderers import  TemplateHTMLRendererclass 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尾碼來選擇渲染器。

 

轉自:https://www.cnblogs.com/liuqingzheng/articles/9766413.html

第八章 restframework——響應器

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.