Responder rest-framework (renderer)

 

A role:

  The type of user request URL or acceptable to the user, select the best render component.
  The user requests the URL of:
        http://127.0.0.1:8000/test/?format=json
        http://127.0.0.1:8000/test.json

Two built-in renderer

    Display json format: JSONRenderer

    Access 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

   The default display format: BrowsableAPIRenderer (you can modify its html file)

    Access 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

   Tabular form: AdminRenderer

    Access 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 Form ways: HTMLFormRenderer

   Access URL

        http://127.0.0.1:8000/test/?format=from

        http://127.0.0.1:8000/test.from

        http://127.0.0.1:8000/test

Use three parts

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("")

Four Global Use

In the settings in the configuration:

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

Five custom display templates:

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>

NOTE: If both the presence of a plurality of automatically selected based on the URL suffix renderer.

Guess you like

Origin www.cnblogs.com/HUIWANG/p/11140090.html